dynetan 2.2.0__tar.gz → 2.2.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dynetan-2.2.0 → dynetan-2.2.2}/PKG-INFO +14 -17
- {dynetan-2.2.0 → dynetan-2.2.2}/README.md +10 -13
- {dynetan-2.2.0 → dynetan-2.2.2}/docs/source/Tutorial.rst +1 -1
- {dynetan-2.2.0 → dynetan-2.2.2}/docs/source/conf.py +2 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/docs/source/index.rst +8 -5
- {dynetan-2.2.0 → dynetan-2.2.2}/pyproject.toml +5 -4
- {dynetan-2.2.0 → dynetan-2.2.2}/src/dynetan/proctraj.py +70 -31
- dynetan-2.2.2/src/dynetan/version.py +1 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/tests/test_proctraj_checksys_selectsys.py +27 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/tests/test_proctraj_graph.py +6 -6
- dynetan-2.2.0/src/dynetan/version.py +0 -1
- {dynetan-2.2.0 → dynetan-2.2.2}/.gitignore +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/INSTALL.md +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/LICENSE +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/docs/Makefile +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/docs/README.rst +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/docs/make.bat +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/docs/requirements.txt +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/docs/source/Citing.rst +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/docs/source/Figures/OMP-Render.png +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/docs/source/Installation.rst +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/docs/source/Introduction.rst +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/docs/source/Reference.rst +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/docs/source/Usage.rst +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/src/dynetan/__init__.py +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/src/dynetan/contact.py +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/src/dynetan/datastorage.py +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/src/dynetan/gencor.py +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/src/dynetan/network.py +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/src/dynetan/toolkit.py +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/src/dynetan/viz.py +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/src/dynetan/vizmod/__init__.py +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/src/dynetan/vizmod/community_RGB_colors.csv +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/src/dynetan/vizmod/network_color.tcl +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/src/dynetan/vizmod/network_menu.tcl +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/src/dynetan/vizmod/network_proc.tcl +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/src/dynetan/vizmod/network_rep.tcl +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/src/dynetan/vizmod/network_view_2.tcl +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/tests/__init__.py +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/tests/conftest.py +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/tests/test_contact.py +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/tests/test_data/__init__.py +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/tests/test_data/decarboxylase.0.psf +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/tests/test_data/decarboxylase.1.short.dcd +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/tests/test_data_storage.py +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/tests/test_proctraj_cartesian.py +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/tests/test_proctraj_contacts.py +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/tests/test_proctraj_corr.py +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/tests/test_proctraj_interface.py +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/tests/test_proctraj_prepareNetwork.py +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/tests/test_proctraj_set_get.py +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/tests/test_toolkit.py +0 -0
- {dynetan-2.2.0 → dynetan-2.2.2}/tests/test_viz.py +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: dynetan
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.2
|
|
4
4
|
Summary: A Python implementation for Dynamical Network Analysis.
|
|
5
|
-
Project-URL: Homepage, https://
|
|
6
|
-
Project-URL: Bug Tracker, https://
|
|
5
|
+
Project-URL: Homepage, https://gitlab.com/comp-biochem-csu/dynetan
|
|
6
|
+
Project-URL: Bug Tracker, https://gitlab.com/comp-biochem-csu/dynetan/-/issues
|
|
7
7
|
Project-URL: Documentation, https://dynamical-network-analysis.readthedocs.io
|
|
8
8
|
Author-email: "Marcelo C. R. Melo" <melomcr@gmail.com>
|
|
9
9
|
License-File: LICENSE
|
|
@@ -26,12 +26,13 @@ Description-Content-Type: text/markdown
|
|
|
26
26
|
Dynamical Network Analysis
|
|
27
27
|
===========================
|
|
28
28
|
|
|
29
|
-

|
|
30
30
|
[](https://pypi.org/project/dynetan/)
|
|
31
|
-
[](https://dynamical-network-analysis.readthedocs.io/en/latest/?badge=latest)
|
|
32
|
+
[](https://gitlab.com/comp-biochem-csu/dynetan/-/pipelines)
|
|
33
|
+
[](https://codecov.io/gl/comp-biochem-csu/dynetan)
|
|
34
|
+

|
|
35
|
+
|
|
35
36
|
|
|
36
37
|
The Python implementation of Dynamical Network Analysis was built to provide all
|
|
37
38
|
functionalities necessary to the analysis of Molecular Dynamics (MD) simulations
|
|
@@ -40,7 +41,7 @@ using the Dynamical Network Analysis method.
|
|
|
40
41
|
Install
|
|
41
42
|
-------
|
|
42
43
|
|
|
43
|
-
Install the latest version of Dynamical Network Analysis
|
|
44
|
+
Install the latest version of Dynamical Network Analysis:
|
|
44
45
|
|
|
45
46
|
$ pip install dynetan
|
|
46
47
|
|
|
@@ -49,18 +50,14 @@ For additional details, please see `INSTALL.md`.
|
|
|
49
50
|
Tutorial
|
|
50
51
|
--------
|
|
51
52
|
|
|
52
|
-
|
|
53
|
-
prepared and released along with its latest publication:
|
|
53
|
+
Several jupyter notebook tutorials have been prepared as an introduction to this package and were released in an independent repository:
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
approach for identifying allosteric communications in molecular dynamics
|
|
57
|
-
trajectories. J. Chem. Phys. (2020).
|
|
58
|
-
DOI: 10.1063/5.0018980](https://doi.org/10.1063/5.0018980)
|
|
55
|
+
https://gitlab.com/comp-biochem-csu/dynetan_tutorial
|
|
59
56
|
|
|
60
57
|
Documentation
|
|
61
58
|
------------------------
|
|
62
59
|
|
|
63
|
-
|
|
60
|
+
The full documentation can be found at
|
|
64
61
|
https://dynamical-network-analysis.readthedocs.io/en/latest/index.html
|
|
65
62
|
|
|
66
63
|
Resources and References
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
Dynamical Network Analysis
|
|
2
2
|
===========================
|
|
3
3
|
|
|
4
|
-

|
|
5
5
|
[](https://pypi.org/project/dynetan/)
|
|
6
|
-
[](https://dynamical-network-analysis.readthedocs.io/en/latest/?badge=latest)
|
|
7
|
+
[](https://gitlab.com/comp-biochem-csu/dynetan/-/pipelines)
|
|
8
|
+
[](https://codecov.io/gl/comp-biochem-csu/dynetan)
|
|
9
|
+

|
|
10
|
+
|
|
10
11
|
|
|
11
12
|
The Python implementation of Dynamical Network Analysis was built to provide all
|
|
12
13
|
functionalities necessary to the analysis of Molecular Dynamics (MD) simulations
|
|
@@ -15,7 +16,7 @@ using the Dynamical Network Analysis method.
|
|
|
15
16
|
Install
|
|
16
17
|
-------
|
|
17
18
|
|
|
18
|
-
Install the latest version of Dynamical Network Analysis
|
|
19
|
+
Install the latest version of Dynamical Network Analysis:
|
|
19
20
|
|
|
20
21
|
$ pip install dynetan
|
|
21
22
|
|
|
@@ -24,18 +25,14 @@ For additional details, please see `INSTALL.md`.
|
|
|
24
25
|
Tutorial
|
|
25
26
|
--------
|
|
26
27
|
|
|
27
|
-
|
|
28
|
-
prepared and released along with its latest publication:
|
|
28
|
+
Several jupyter notebook tutorials have been prepared as an introduction to this package and were released in an independent repository:
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
approach for identifying allosteric communications in molecular dynamics
|
|
32
|
-
trajectories. J. Chem. Phys. (2020).
|
|
33
|
-
DOI: 10.1063/5.0018980](https://doi.org/10.1063/5.0018980)
|
|
30
|
+
https://gitlab.com/comp-biochem-csu/dynetan_tutorial
|
|
34
31
|
|
|
35
32
|
Documentation
|
|
36
33
|
------------------------
|
|
37
34
|
|
|
38
|
-
|
|
35
|
+
The full documentation can be found at
|
|
39
36
|
https://dynamical-network-analysis.readthedocs.io/en/latest/index.html
|
|
40
37
|
|
|
41
38
|
Resources and References
|
|
@@ -12,7 +12,7 @@ using Jupyter Notebooks, as well as command-line-interface (CLI) scripts that ca
|
|
|
12
12
|
deployed for execution in remote computer clusters.
|
|
13
13
|
|
|
14
14
|
For the latest version of the tutorial, download the
|
|
15
|
-
`tutorial files here <https://
|
|
15
|
+
`tutorial files here <https://gitlab.com/comp-biochem-csu/dynetan_tutorial>`_
|
|
16
16
|
along with accompanying
|
|
17
17
|
`trajectory data here <https://compbiophysics.auburn.edu/DyNetAn_Tutorial/data/DynamicNetworkAnalysis_MDdata.tar.gz>`_
|
|
18
18
|
(trajectory files are approximately 500MB in size).
|
|
@@ -94,6 +94,8 @@ if not on_rtd: # only import and set the theme if we're building docs locally
|
|
|
94
94
|
import sphinx_rtd_theme
|
|
95
95
|
html_theme = "sphinx_rtd_theme"
|
|
96
96
|
html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
|
|
97
|
+
else:
|
|
98
|
+
html_theme = "sphinx_rtd_theme"
|
|
97
99
|
|
|
98
100
|
# Add any paths that contain custom static files (such as style sheets) here,
|
|
99
101
|
# relative to this directory. They are copied after the builtin static files,
|
|
@@ -6,21 +6,24 @@ Dynamical Network Analysis
|
|
|
6
6
|
|
|
7
7
|
This package was built to provide an updated and enhanced Python implementation
|
|
8
8
|
of the Dynamical Network Analysis method, for the analysis of Molecular Dynamics
|
|
9
|
-
simulations. The package was optimized for interactive
|
|
10
|
-
Notebooks (see :ref:`Tutorial <Tutorial>`),
|
|
11
|
-
|
|
9
|
+
simulations. The package was optimized for interactive data analysis and
|
|
10
|
+
visualization through Jupyter Notebooks (see :ref:`Tutorial <Tutorial>`),
|
|
11
|
+
and provides an interface for rendering publication-quality figures using
|
|
12
|
+
`VMD <https://www.ks.uiuc.edu/Research/vmd/>`_.
|
|
13
|
+
It allows for extensive customization of analysis workflows to suit
|
|
14
|
+
research-specific needs.
|
|
12
15
|
|
|
13
16
|
.. toctree::
|
|
14
17
|
:maxdepth: 2
|
|
15
18
|
:caption: Contents:
|
|
16
|
-
|
|
19
|
+
|
|
17
20
|
Introduction
|
|
18
21
|
Installation
|
|
19
22
|
Tutorial
|
|
20
23
|
Usage
|
|
21
24
|
Citing
|
|
22
25
|
Reference
|
|
23
|
-
|
|
26
|
+
|
|
24
27
|
|
|
25
28
|
Indices and tables
|
|
26
29
|
==================
|
|
@@ -34,8 +34,8 @@ classifiers = [
|
|
|
34
34
|
]
|
|
35
35
|
|
|
36
36
|
[project.urls]
|
|
37
|
-
"Homepage" = "https://
|
|
38
|
-
"Bug Tracker" = "https://
|
|
37
|
+
"Homepage" = "https://gitlab.com/comp-biochem-csu/dynetan"
|
|
38
|
+
"Bug Tracker" = "https://gitlab.com/comp-biochem-csu/dynetan/-/issues"
|
|
39
39
|
"Documentation" = "https://dynamical-network-analysis.readthedocs.io"
|
|
40
40
|
|
|
41
41
|
[tool.hatch.version]
|
|
@@ -66,10 +66,11 @@ filterwarnings = [
|
|
|
66
66
|
"error", #converts all warnings to errors
|
|
67
67
|
"ignore:.*numpy.ndarray size changed.*:RuntimeWarning",
|
|
68
68
|
# "ignore::UserWarning",
|
|
69
|
-
# note the use of single
|
|
69
|
+
# note the use of the single quotes below to denote "raw" strings in TOML
|
|
70
70
|
'ignore:.*np.MachAr.* is deprecated:DeprecationWarning',
|
|
71
71
|
'ignore::DeprecationWarning:jupyter*',
|
|
72
|
-
'ignore:.*DCDReader.*independent timesteps.*:DeprecationWarning:MDAnalysis'
|
|
72
|
+
'ignore:.*DCDReader.*independent timesteps.*:DeprecationWarning:MDAnalysis',
|
|
73
|
+
"ignore::UserWarning:nglview.*"
|
|
73
74
|
]
|
|
74
75
|
|
|
75
76
|
[tool.mypy]
|
|
@@ -19,7 +19,7 @@ import networkx as nx
|
|
|
19
19
|
|
|
20
20
|
import community
|
|
21
21
|
|
|
22
|
-
from networkx import
|
|
22
|
+
from networkx import eigenvector_centrality as nxeigencentrality
|
|
23
23
|
from networkx import edge_betweenness_centrality as nxbetweenness
|
|
24
24
|
from networkx.algorithms.shortest_paths.dense import \
|
|
25
25
|
floyd_warshall_predecessor_and_distance as nxFWPD
|
|
@@ -509,6 +509,48 @@ class DNAproc:
|
|
|
509
509
|
self.notSelResNamesSet = notSelResNamesSet
|
|
510
510
|
self.notSelSegidSet = notSelSegidSet
|
|
511
511
|
|
|
512
|
+
def _get_sel_check_set(self, with_solvent: bool) -> Union[mda.AtomGroup, None]:
|
|
513
|
+
"""
|
|
514
|
+
Returns an atom selection object or None for selection of structural
|
|
515
|
+
solvent, ions, and other molecules.
|
|
516
|
+
|
|
517
|
+
Args:
|
|
518
|
+
with_solvent (bool): Whether solvent molecules should be automatically
|
|
519
|
+
selected for analysis.
|
|
520
|
+
|
|
521
|
+
Returns:
|
|
522
|
+
mda.AtomGroup
|
|
523
|
+
"""
|
|
524
|
+
if with_solvent:
|
|
525
|
+
# For automatic solvent detection, we use the segIDs that were
|
|
526
|
+
# not selected by the user as targets for network analysis.
|
|
527
|
+
if self.notSelSegidSet:
|
|
528
|
+
selStr = "(not (name H* or name [123]H*)) "
|
|
529
|
+
selStr += "and segid " + " ".join(self.notSelSegidSet)
|
|
530
|
+
checkSet = self.workU.select_atoms(selStr)
|
|
531
|
+
else:
|
|
532
|
+
print("WARNING: All segments have been selected for Network "
|
|
533
|
+
"Analysis, none are left for automatic identification "
|
|
534
|
+
"of structural solvent molecules or lipids.")
|
|
535
|
+
checkSet = None
|
|
536
|
+
else:
|
|
537
|
+
# Without solvent detection, the new selection removes all solvent
|
|
538
|
+
# molecules from the selection but keeps selected segments.
|
|
539
|
+
# Those may have ions or ligands that may be structural and
|
|
540
|
+
# necessary for the analysis.
|
|
541
|
+
if self.notSelSegidSet:
|
|
542
|
+
selStr = "segid " + " ".join(self.notSelSegidSet)
|
|
543
|
+
selStr += " and not resname " + " ".join(self.solventNames)
|
|
544
|
+
selStr += " and not (name H* or name [123]H*)"
|
|
545
|
+
checkSet = self.workU.select_atoms(selStr)
|
|
546
|
+
else:
|
|
547
|
+
print("WARNING: All segments have been selected for Network "
|
|
548
|
+
"Analysis, none are left for automatic identification "
|
|
549
|
+
"of transient contacts.")
|
|
550
|
+
checkSet = None
|
|
551
|
+
|
|
552
|
+
return checkSet
|
|
553
|
+
|
|
512
554
|
def selectSystem(self,
|
|
513
555
|
withSolvent: bool = False,
|
|
514
556
|
inputSelStr: str = "",
|
|
@@ -563,41 +605,38 @@ class DNAproc:
|
|
|
563
605
|
initialSel = self.workU.select_atoms(inputSelStr)
|
|
564
606
|
|
|
565
607
|
else:
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
# not selected by the user as targets for network analysis.
|
|
569
|
-
if self.notSelSegidSet:
|
|
570
|
-
selStr = "(not (name H* or name [123]H*)) "
|
|
571
|
-
selStr += "and segid " + " ".join(self.notSelSegidSet)
|
|
572
|
-
checkSet = self.workU.select_atoms(selStr)
|
|
573
|
-
else:
|
|
574
|
-
print("WARNING: All segments have been selected for Network "
|
|
575
|
-
"Analysis, none are left for automatic identification "
|
|
576
|
-
"of structural solvent molecules or lipids.")
|
|
577
|
-
checkSet = None
|
|
578
|
-
else:
|
|
579
|
-
# Without solvent detection, the new selection removes all solvent
|
|
580
|
-
# molecules from the selection but keeps other segments that may
|
|
581
|
-
# ions or ligands that may be structural and necessary for the
|
|
582
|
-
# analysis.
|
|
583
|
-
if self.notSelSegidSet:
|
|
584
|
-
selStr = "segid " + " ".join(self.notSelSegidSet)
|
|
585
|
-
selStr += " and not resname " + " ".join(self.solventNames)
|
|
586
|
-
selStr += " and not (name H* or name [123]H*)"
|
|
587
|
-
checkSet = self.workU.select_atoms(selStr)
|
|
588
|
-
else:
|
|
589
|
-
print("WARNING: All segments have been selected for Network "
|
|
590
|
-
"Analysis, none are left for automatic identification "
|
|
591
|
-
"of transient contacts.")
|
|
592
|
-
checkSet = None
|
|
608
|
+
|
|
609
|
+
checkSet = self._get_sel_check_set(withSolvent)
|
|
593
610
|
|
|
594
611
|
if checkSet:
|
|
595
612
|
numAutoFrames: int = self.numSampledFrames * self.numWinds
|
|
596
613
|
|
|
597
614
|
stride = int(np.floor(len(self.workU.trajectory) / numAutoFrames))
|
|
598
615
|
|
|
599
|
-
|
|
600
|
-
|
|
616
|
+
if stride > 0:
|
|
617
|
+
print("Checking {0} frames (striding {1})...".format(
|
|
618
|
+
numAutoFrames, stride))
|
|
619
|
+
if stride <= 0: # Sanity check
|
|
620
|
+
|
|
621
|
+
n_frames = int(len(self.workU.trajectory))
|
|
622
|
+
n_frames_w = len(self.workU.trajectory)/self.numWinds
|
|
623
|
+
errorStr = f"The trajectory has {n_frames} frames, " \
|
|
624
|
+
f"or {n_frames_w} frames per window, which is " \
|
|
625
|
+
f"less than the number of sampled " \
|
|
626
|
+
f"frames: {self.numSampledFrames}. We need at " \
|
|
627
|
+
f"least one sampled frame per window!"
|
|
628
|
+
print(errorStr)
|
|
629
|
+
|
|
630
|
+
errorStr = f"Check the number of sampled " \
|
|
631
|
+
f"frames ({self.numSampledFrames}) and the number " \
|
|
632
|
+
f"of windows ({self.numWinds}) chosen for this analysis."
|
|
633
|
+
print(errorStr)
|
|
634
|
+
|
|
635
|
+
errorStr = (Fore.RED + "ERROR!" + Fore.RESET +
|
|
636
|
+
f" Stride was set to {stride}!")
|
|
637
|
+
print(errorStr)
|
|
638
|
+
|
|
639
|
+
raise Exception(errorStr)
|
|
601
640
|
|
|
602
641
|
selRes = self.workU.select_atoms("segid " + " ".join(self.segIDs))
|
|
603
642
|
searchSelRes = selRes.select_atoms("not (name H* or name [123]H*)")
|
|
@@ -2121,7 +2160,7 @@ class DNAproc:
|
|
|
2121
2160
|
"""
|
|
2122
2161
|
for win in range(self.numWinds):
|
|
2123
2162
|
# Calc all node centrality values in the system.
|
|
2124
|
-
cent = nxeigencentrality(self.nxGraphs[win], weight='weight')
|
|
2163
|
+
cent = nxeigencentrality(self.nxGraphs[win], weight='weight', max_iter=5000)
|
|
2125
2164
|
nx.set_node_attributes(self.nxGraphs[win], cent, 'eigenvector')
|
|
2126
2165
|
|
|
2127
2166
|
def calcCommunities(self) -> None:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "2.2.2"
|
|
@@ -102,6 +102,33 @@ class TestPackageSysVerificationSelection:
|
|
|
102
102
|
dnap_fail.checkSystem()
|
|
103
103
|
dnap_fail.selectSystem(withSolvent=False, inputSelStr="")
|
|
104
104
|
|
|
105
|
+
@pytest.mark.xfail(strict=True)
|
|
106
|
+
def test_select_system_stride(self, test_data_dir):
|
|
107
|
+
psfFile = os.path.join(test_data_dir, psf_fn_omp)
|
|
108
|
+
dcdFiles = [os.path.join(test_data_dir, dcd_fn_omp)]
|
|
109
|
+
|
|
110
|
+
dnap_fail = dna.proctraj.DNAproc(notebookMode=False)
|
|
111
|
+
|
|
112
|
+
# Test the default wrapper for loading a list of paths to DCDs
|
|
113
|
+
dnap_fail.loadSystem(psfFile, dcdFiles)
|
|
114
|
+
|
|
115
|
+
node_grps = {"OMP": {}}
|
|
116
|
+
node_grps["OMP"]["N1"] = set("N1 C2 O2 N3 C4 O4 C5 C6 C7 OA OB".split())
|
|
117
|
+
node_grps["OMP"]["P"] = set("P OP1 OP2 OP3 O5' C5' C4' O4' C1' C3' C2' "
|
|
118
|
+
"O2' O3'".split())
|
|
119
|
+
|
|
120
|
+
# TEST STRIDE LENGTH
|
|
121
|
+
dnap_fail.setNumWinds(1)
|
|
122
|
+
dnap_fail.setNumSampledFrames(200) # INDUCE HUGE STRIDE
|
|
123
|
+
# STRIDE WILL BE TOO LARGE FOR WINDOW LENGTH
|
|
124
|
+
|
|
125
|
+
dnap_fail.setSolvNames(["TIP3"])
|
|
126
|
+
dnap_fail.setSegIDs(["OMP", "ENZY"])
|
|
127
|
+
dnap_fail.setNodeGroups(node_grps)
|
|
128
|
+
|
|
129
|
+
dnap_fail.checkSystem()
|
|
130
|
+
dnap_fail.selectSystem(withSolvent=True)
|
|
131
|
+
|
|
105
132
|
@pytest.mark.parametrize(("solv", "sel", "verb", "n_atoms"), [
|
|
106
133
|
(True, "protein", 0, 3291),
|
|
107
134
|
(True, "protein and (not (name H* or name [123]H*))", 0, 1635),
|
|
@@ -270,15 +270,15 @@ class TestGraph:
|
|
|
270
270
|
|
|
271
271
|
# Window, Node, Eigenvector Centrality
|
|
272
272
|
ref_vals = [[0, 0, 0.2518],
|
|
273
|
-
[0, 215, 0.
|
|
274
|
-
[0, 216, 0.
|
|
275
|
-
[1, 0, 0.
|
|
276
|
-
[1, 215, 0.
|
|
277
|
-
[1, 216, 0.
|
|
273
|
+
[0, 215, 0.1061],
|
|
274
|
+
[0, 216, 0.0414],
|
|
275
|
+
[1, 0, 0.0059],
|
|
276
|
+
[1, 215, 0.0006],
|
|
277
|
+
[1, 216, 0.0073]
|
|
278
278
|
]
|
|
279
279
|
|
|
280
280
|
for window, node, ref_val in ref_vals:
|
|
281
|
-
ev_val = round(dnap.nxGraphs[window].nodes[node]['eigenvector'],
|
|
281
|
+
ev_val = round(dnap.nxGraphs[window].nodes[node]['eigenvector'], 4)
|
|
282
282
|
assert ev_val == ref_val
|
|
283
283
|
|
|
284
284
|
@pytest.mark.parametrize(
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "2.2.0"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|