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.
Files changed (53) hide show
  1. {dynetan-2.2.0 → dynetan-2.2.2}/PKG-INFO +14 -17
  2. {dynetan-2.2.0 → dynetan-2.2.2}/README.md +10 -13
  3. {dynetan-2.2.0 → dynetan-2.2.2}/docs/source/Tutorial.rst +1 -1
  4. {dynetan-2.2.0 → dynetan-2.2.2}/docs/source/conf.py +2 -0
  5. {dynetan-2.2.0 → dynetan-2.2.2}/docs/source/index.rst +8 -5
  6. {dynetan-2.2.0 → dynetan-2.2.2}/pyproject.toml +5 -4
  7. {dynetan-2.2.0 → dynetan-2.2.2}/src/dynetan/proctraj.py +70 -31
  8. dynetan-2.2.2/src/dynetan/version.py +1 -0
  9. {dynetan-2.2.0 → dynetan-2.2.2}/tests/test_proctraj_checksys_selectsys.py +27 -0
  10. {dynetan-2.2.0 → dynetan-2.2.2}/tests/test_proctraj_graph.py +6 -6
  11. dynetan-2.2.0/src/dynetan/version.py +0 -1
  12. {dynetan-2.2.0 → dynetan-2.2.2}/.gitignore +0 -0
  13. {dynetan-2.2.0 → dynetan-2.2.2}/INSTALL.md +0 -0
  14. {dynetan-2.2.0 → dynetan-2.2.2}/LICENSE +0 -0
  15. {dynetan-2.2.0 → dynetan-2.2.2}/docs/Makefile +0 -0
  16. {dynetan-2.2.0 → dynetan-2.2.2}/docs/README.rst +0 -0
  17. {dynetan-2.2.0 → dynetan-2.2.2}/docs/make.bat +0 -0
  18. {dynetan-2.2.0 → dynetan-2.2.2}/docs/requirements.txt +0 -0
  19. {dynetan-2.2.0 → dynetan-2.2.2}/docs/source/Citing.rst +0 -0
  20. {dynetan-2.2.0 → dynetan-2.2.2}/docs/source/Figures/OMP-Render.png +0 -0
  21. {dynetan-2.2.0 → dynetan-2.2.2}/docs/source/Installation.rst +0 -0
  22. {dynetan-2.2.0 → dynetan-2.2.2}/docs/source/Introduction.rst +0 -0
  23. {dynetan-2.2.0 → dynetan-2.2.2}/docs/source/Reference.rst +0 -0
  24. {dynetan-2.2.0 → dynetan-2.2.2}/docs/source/Usage.rst +0 -0
  25. {dynetan-2.2.0 → dynetan-2.2.2}/src/dynetan/__init__.py +0 -0
  26. {dynetan-2.2.0 → dynetan-2.2.2}/src/dynetan/contact.py +0 -0
  27. {dynetan-2.2.0 → dynetan-2.2.2}/src/dynetan/datastorage.py +0 -0
  28. {dynetan-2.2.0 → dynetan-2.2.2}/src/dynetan/gencor.py +0 -0
  29. {dynetan-2.2.0 → dynetan-2.2.2}/src/dynetan/network.py +0 -0
  30. {dynetan-2.2.0 → dynetan-2.2.2}/src/dynetan/toolkit.py +0 -0
  31. {dynetan-2.2.0 → dynetan-2.2.2}/src/dynetan/viz.py +0 -0
  32. {dynetan-2.2.0 → dynetan-2.2.2}/src/dynetan/vizmod/__init__.py +0 -0
  33. {dynetan-2.2.0 → dynetan-2.2.2}/src/dynetan/vizmod/community_RGB_colors.csv +0 -0
  34. {dynetan-2.2.0 → dynetan-2.2.2}/src/dynetan/vizmod/network_color.tcl +0 -0
  35. {dynetan-2.2.0 → dynetan-2.2.2}/src/dynetan/vizmod/network_menu.tcl +0 -0
  36. {dynetan-2.2.0 → dynetan-2.2.2}/src/dynetan/vizmod/network_proc.tcl +0 -0
  37. {dynetan-2.2.0 → dynetan-2.2.2}/src/dynetan/vizmod/network_rep.tcl +0 -0
  38. {dynetan-2.2.0 → dynetan-2.2.2}/src/dynetan/vizmod/network_view_2.tcl +0 -0
  39. {dynetan-2.2.0 → dynetan-2.2.2}/tests/__init__.py +0 -0
  40. {dynetan-2.2.0 → dynetan-2.2.2}/tests/conftest.py +0 -0
  41. {dynetan-2.2.0 → dynetan-2.2.2}/tests/test_contact.py +0 -0
  42. {dynetan-2.2.0 → dynetan-2.2.2}/tests/test_data/__init__.py +0 -0
  43. {dynetan-2.2.0 → dynetan-2.2.2}/tests/test_data/decarboxylase.0.psf +0 -0
  44. {dynetan-2.2.0 → dynetan-2.2.2}/tests/test_data/decarboxylase.1.short.dcd +0 -0
  45. {dynetan-2.2.0 → dynetan-2.2.2}/tests/test_data_storage.py +0 -0
  46. {dynetan-2.2.0 → dynetan-2.2.2}/tests/test_proctraj_cartesian.py +0 -0
  47. {dynetan-2.2.0 → dynetan-2.2.2}/tests/test_proctraj_contacts.py +0 -0
  48. {dynetan-2.2.0 → dynetan-2.2.2}/tests/test_proctraj_corr.py +0 -0
  49. {dynetan-2.2.0 → dynetan-2.2.2}/tests/test_proctraj_interface.py +0 -0
  50. {dynetan-2.2.0 → dynetan-2.2.2}/tests/test_proctraj_prepareNetwork.py +0 -0
  51. {dynetan-2.2.0 → dynetan-2.2.2}/tests/test_proctraj_set_get.py +0 -0
  52. {dynetan-2.2.0 → dynetan-2.2.2}/tests/test_toolkit.py +0 -0
  53. {dynetan-2.2.0 → dynetan-2.2.2}/tests/test_viz.py +0 -0
@@ -1,9 +1,9 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: dynetan
3
- Version: 2.2.0
3
+ Version: 2.2.2
4
4
  Summary: A Python implementation for Dynamical Network Analysis.
5
- Project-URL: Homepage, https://github.com/melomcr/dynetan
6
- Project-URL: Bug Tracker, https://github.com/melomcr/dynetan/issues
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
- ![GitHub release (latest by date)](https://img.shields.io/github/v/release/melomcr/dynetan)
29
+ ![last release](https://img.shields.io/gitlab/v/release/comp-biochem-csu/dynetan)
30
30
  [![PyPI](https://img.shields.io/pypi/v/dynetan)](https://pypi.org/project/dynetan/)
31
- [![Documentation Status](https://readthedocs.org/projects/dynamical-network-analysis/badge/?version=latest)](https://dynamical-network-analysis.readthedocs.io/en/latest/?badge=latest)
32
- [![GH CI Tests](https://github.com/melomcr/dynetan/actions/workflows/github-actions-ci.yml/badge.svg)](https://github.com/melomcr/dynetan/actions/workflows/github-actions-ci.yml)
33
- [![codecov](https://codecov.io/gh/melomcr/dynetan/branch/master/graph/badge.svg)](https://codecov.io/gh/melomcr/dynetan)
34
- ![GitHub](https://img.shields.io/github/license/melomcr/dynetan)
31
+ [![Read-The-Docs Status](https://readthedocs.org/projects/dynamical-network-analysis/badge/?version=latest)](https://dynamical-network-analysis.readthedocs.io/en/latest/?badge=latest)
32
+ [![CI/CD Status](https://img.shields.io/gitlab/pipeline-status/comp-biochem-csu/dynetan)](https://gitlab.com/comp-biochem-csu/dynetan/-/pipelines)
33
+ [![Codecov](https://codecov.io/gl/comp-biochem-csu/dynetan/branch/master/graph/badge.svg)](https://codecov.io/gl/comp-biochem-csu/dynetan)
34
+ ![License](https://img.shields.io/gitlab/license/comp-biochem-csu/dynetan)
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
- For an introduction to this implementation, a jupyter notebook tutorial has been
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
- * [Generalized correlation-based dynamical network analysis: a new high-performance
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
- A full documentation can be found at
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
- ![GitHub release (latest by date)](https://img.shields.io/github/v/release/melomcr/dynetan)
4
+ ![last release](https://img.shields.io/gitlab/v/release/comp-biochem-csu/dynetan)
5
5
  [![PyPI](https://img.shields.io/pypi/v/dynetan)](https://pypi.org/project/dynetan/)
6
- [![Documentation Status](https://readthedocs.org/projects/dynamical-network-analysis/badge/?version=latest)](https://dynamical-network-analysis.readthedocs.io/en/latest/?badge=latest)
7
- [![GH CI Tests](https://github.com/melomcr/dynetan/actions/workflows/github-actions-ci.yml/badge.svg)](https://github.com/melomcr/dynetan/actions/workflows/github-actions-ci.yml)
8
- [![codecov](https://codecov.io/gh/melomcr/dynetan/branch/master/graph/badge.svg)](https://codecov.io/gh/melomcr/dynetan)
9
- ![GitHub](https://img.shields.io/github/license/melomcr/dynetan)
6
+ [![Read-The-Docs Status](https://readthedocs.org/projects/dynamical-network-analysis/badge/?version=latest)](https://dynamical-network-analysis.readthedocs.io/en/latest/?badge=latest)
7
+ [![CI/CD Status](https://img.shields.io/gitlab/pipeline-status/comp-biochem-csu/dynetan)](https://gitlab.com/comp-biochem-csu/dynetan/-/pipelines)
8
+ [![Codecov](https://codecov.io/gl/comp-biochem-csu/dynetan/branch/master/graph/badge.svg)](https://codecov.io/gl/comp-biochem-csu/dynetan)
9
+ ![License](https://img.shields.io/gitlab/license/comp-biochem-csu/dynetan)
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
- For an introduction to this implementation, a jupyter notebook tutorial has been
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
- * [Generalized correlation-based dynamical network analysis: a new high-performance
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
- A full documentation can be found at
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://github.com/melomcr/dynetan_tutorial>`_
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 use through Jupyter
10
- Notebooks (see :ref:`Tutorial <Tutorial>`), and allows for extensive
11
- customization of analysis to suit research-specific needs.
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://github.com/melomcr/dynetan"
38
- "Bug Tracker" = "https://github.com/melomcr/dynetan/issues"
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 quote below to denote "raw" strings in TOML
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 eigenvector_centrality_numpy as nxeigencentrality
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
- if withSolvent:
567
- # For automatic solvent detection, we use the segIDs that were
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
- print("Checking {0} frames (striding {1})...".format(
600
- numAutoFrames, stride))
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.10615],
274
- [0, 216, 0.04137],
275
- [1, 0, 0.00585],
276
- [1, 215, 0.00055],
277
- [1, 216, 0.00731]
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'], 5)
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