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
|
# -*- 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
#
import os
import pytest
import importlib
# environment variable DUECREDIT_ENABLE is set to yes in MDAnalysisTests/__init__.py
# (if set to 'no', the tests will be SKIPPED; has to be yes, true, or 1 for duecredit
# to work; duecredit must also be installed)
import MDAnalysis as mda
from MDAnalysis.coordinates.H5MD import HAS_H5PY
from MDAnalysisTests.datafiles import MMTF, TPR_xvf, H5MD_xvf
from MDAnalysisTests.util import import_not_available
# duecredit itself is not needed in the name space but this is a
# convenient way to skip all tests if duecredit is not installed
# (see https://github.com/MDAnalysis/mdanalysis/issues/1906)
pytest.importorskip("duecredit")
@pytest.mark.skipif(
(
os.environ.get("DUECREDIT_ENABLE", "yes").lower()
in ("no", "0", "false")
),
reason="duecredit is explicitly disabled with DUECREDIT_ENABLE=no",
)
class TestDuecredit(object):
def test_duecredit_active(self):
assert mda.due.active == True
@pytest.mark.parametrize(
"module,path,citekey",
[
("MDAnalysis", "MDAnalysis", "10.25080/majora-629e541a-00e"),
("MDAnalysis", "MDAnalysis", "10.1002/jcc.21787"),
],
)
def test_duecredit_collector_primary(self, module, path, citekey):
assert mda.due.citations[(path, citekey)].cites_module == True
# note: citekeys are *all lower case*
@pytest.mark.parametrize(
"module,path,citekey",
[
(
"MDAnalysis.analysis.hydrogenbonds.hbond_autocorrel",
"MDAnalysis.analysis.hydrogenbonds.hbond_autocorrel",
"10.1063/1.4922445",
),
(
"MDAnalysis.analysis.leaflet",
"MDAnalysis.analysis.leaflet",
"10.1002/jcc.21787",
),
(
"MDAnalysis.lib.qcprot",
"MDAnalysis.lib.qcprot",
"10.1107/s0108767305015266",
),
("MDAnalysis.lib.qcprot", "MDAnalysis.lib.qcprot", "qcprot2"),
(
"MDAnalysis.analysis.encore",
"MDAnalysis.analysis.encore",
"10.1371/journal.pcbi.1004415",
),
(
"MDAnalysis.analysis.dssp",
"MDAnalysis.analysis.dssp",
"10.1002/bip.360221211",
),
],
)
def test_duecredit_collector_analysis_modules(self, module, path, citekey):
importlib.import_module(module)
assert mda.due.citations[(path, citekey)].cites_module == True
@pytest.mark.skipif(
import_not_available("pathsimanalysis"),
reason="Test skipped because PathSimAnalysis is not found",
)
def test_duecredit_psa(self):
importlib.import_module("MDAnalysis.analysis.psa")
path = "pathsimanalysis.psa"
citekey = "10.1371/journal.pcbi.1004568"
assert mda.due.citations[(path, citekey)].cites_module == True
def test_duecredit_mmtf(self):
# doesn't trigger on import but on use of either parser or reader
u = mda.Universe(MMTF)
assert mda.due.citations[
("MDAnalysis.coordinates.MMTF", "10.1371/journal.pcbi.1005575")
].cites_module
assert mda.due.citations[
("MDAnalysis.topology.MMTFParser", "10.1371/journal.pcbi.1005575")
].cites_module
@pytest.mark.skipif(not HAS_H5PY, reason="h5py not installed")
def test_duecredit_h5md(self):
# doesn't trigger on import but on use of either reader or writer
u = mda.Universe(TPR_xvf, H5MD_xvf)
assert mda.due.citations[
("MDAnalysis.coordinates.H5MD", "10.25080/majora-1b6fd038-005")
].cites_module
assert mda.due.citations[
("MDAnalysis.coordinates.H5MD", "10.1016/j.cpc.2014.01.018")
].cites_module
|