1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
|
# -*- Mode: python; tab-width: 4; indent-tabs-mode:nil; coding:utf-8 -*-
# vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4 fileencoding=utf-8
#
# MDAnalysis --- https://www.mdanalysis.org
# Copyright (c) 2006-2017 The MDAnalysis Development Team and contributors
# (see the file AUTHORS for the full list of names)
#
# Released under the Lesser GNU Public Licence, v2.1 or any higher version
#
# Please cite your use of MDAnalysis in published work:
#
# R. J. Gowers, M. Linke, J. Barnoud, T. J. E. Reddy, M. N. Melo, S. L. Seyler,
# D. L. Dotson, J. Domanski, S. Buchoux, I. M. Kenney, and O. Beckstein.
# MDAnalysis: A Python package for the rapid analysis of molecular dynamics
# simulations. In S. Benthall and S. Rostrup editors, Proceedings of the 15th
# Python in Science Conference, pages 102-109, Austin, TX, 2016. SciPy.
# doi: 10.25080/majora-629e541a-00e
#
# N. Michaud-Agrawal, E. J. Denning, T. B. Woolf, and O. Beckstein.
# MDAnalysis: A Toolkit for the Analysis of Molecular Dynamics Simulations.
# J. Comput. Chem. 32 (2011), 2319--2327, doi:10.1002/jcc.21787
#
"""Tests for DOS style line endings
The files here are written from a Windows system, so have DOS style line endings.
This was previously problematic for ascii files.
These tests are just basic repeats of the tests from elsewhere, but on these DOS
line ending files.
"""
import numpy as np
import pytest
from numpy.testing import assert_almost_equal, assert_equal
from MDAnalysisTests.datafiles import (
WIN_PDB_multiframe,
WIN_ARC,
WIN_DLP_HISTORY,
WIN_TRJ,
WIN_LAMMPSDUMP,
)
from MDAnalysisTests.coordinates.test_trj import TestTRJReader
from MDAnalysisTests.coordinates.test_dlpoly import TestDLPolyHistory
from MDAnalysisTests.coordinates.test_lammps import TestLammpsDumpReader
import MDAnalysis as mda
class TestWinLammpsDump(TestLammpsDumpReader):
@pytest.fixture
def u(self):
return mda.Universe(WIN_LAMMPSDUMP, format="LAMMPSDUMP")
class TestWinPDB(object):
@staticmethod
@pytest.fixture(scope="class")
def multiverse():
return mda.Universe(WIN_PDB_multiframe, guess_bonds=True)
def test_n_frames(self, multiverse):
assert_equal(
multiverse.trajectory.n_frames,
24,
"Wrong number of frames read from PDB muliple model file",
)
def test_rewind(self, multiverse):
u = multiverse
u.trajectory[11]
assert_equal(
u.trajectory.ts.frame,
11,
"Failed to forward to 11th frame (frame index 11)",
)
u.trajectory.rewind()
assert_equal(
u.trajectory.ts.frame,
0,
"Failed to rewind to 0th frame (frame index 0)",
)
def test_iteration(self, multiverse):
u = multiverse
frames = []
for frame in u.trajectory:
pass
# should rewind after previous test
# problem was: the iterator is NoneType and next() cannot be called
for ts in u.trajectory:
frames.append(ts)
assert_equal(
len(frames),
u.trajectory.n_frames,
"iterated number of frames %d is not the expected number %d; "
"trajectory iterator fails to rewind"
% (len(frames), u.trajectory.n_frames),
)
def test_slice_iteration(self, multiverse):
u = multiverse
frames = []
for ts in u.trajectory[4:-2:4]:
frames.append(ts.frame)
assert_equal(
np.array(frames),
np.arange(u.trajectory.n_frames)[4:-2:4],
err_msg="slicing did not produce the expected frames",
)
class TestWinDLPolyHistory(TestDLPolyHistory):
f = WIN_DLP_HISTORY
class TestWinTRJ(TestTRJReader):
trajectory_file = WIN_TRJ
class TestWinARC(object):
@staticmethod
@pytest.fixture
def WIN_ARC_U():
return mda.Universe(WIN_ARC)
def test_n_frames(self, WIN_ARC_U):
assert len(WIN_ARC_U.trajectory) == 2
def test_positions(self, WIN_ARC_U):
assert_almost_equal(
WIN_ARC_U.atoms.positions[0], [-6.553398, -1.854369, 0.000000]
)
def test_positions_2(self, WIN_ARC_U):
WIN_ARC_U.trajectory[1]
assert_almost_equal(
WIN_ARC_U.atoms.positions[0], [-0.231579, -0.350841, -0.037475]
)
|