SOURSOP 0.2.6__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 (104) hide show
  1. soursop-0.2.6/LICENSE +57 -0
  2. soursop-0.2.6/MANIFEST.in +8 -0
  3. soursop-0.2.6/PKG-INFO +103 -0
  4. soursop-0.2.6/README.md +83 -0
  5. soursop-0.2.6/SOURSOP.egg-info/PKG-INFO +103 -0
  6. soursop-0.2.6/SOURSOP.egg-info/SOURCES.txt +103 -0
  7. soursop-0.2.6/SOURSOP.egg-info/dependency_links.txt +1 -0
  8. soursop-0.2.6/SOURSOP.egg-info/not-zip-safe +1 -0
  9. soursop-0.2.6/SOURSOP.egg-info/requires.txt +11 -0
  10. soursop-0.2.6/SOURSOP.egg-info/top_level.txt +1 -0
  11. soursop-0.2.6/pyproject.toml +68 -0
  12. soursop-0.2.6/setup.cfg +20 -0
  13. soursop-0.2.6/soursop/.ipynb_checkpoints/Untitled-checkpoint.ipynb +6 -0
  14. soursop-0.2.6/soursop/__init__.py +33 -0
  15. soursop-0.2.6/soursop/_internal_data.py +73 -0
  16. soursop-0.2.6/soursop/_version.py +1 -0
  17. soursop-0.2.6/soursop/configs.py +34 -0
  18. soursop-0.2.6/soursop/data/SASA_SUMMARY.csv +20 -0
  19. soursop-0.2.6/soursop/data/bbseg2.dat +36 -0
  20. soursop-0.2.6/soursop/data/phi_excluded_volume_tripeptides.pickle +0 -0
  21. soursop-0.2.6/soursop/data/psi_excluded_volume_tripeptides.pickle +0 -0
  22. soursop-0.2.6/soursop/data/test_data/.ipynb_checkpoints/Untitled-checkpoint.ipynb +6 -0
  23. soursop-0.2.6/soursop/data/test_data/all_residues.pdb +339 -0
  24. soursop-0.2.6/soursop/data/test_data/all_residues.xtc +0 -0
  25. soursop-0.2.6/soursop/data/test_data/cap_tests/ACD_start_1.pdb +48 -0
  26. soursop-0.2.6/soursop/data/test_data/cap_tests/ACD_start_10.pdb +48 -0
  27. soursop-0.2.6/soursop/data/test_data/cap_tests/ACE_NH2.pdb +87 -0
  28. soursop-0.2.6/soursop/data/test_data/cap_tests/ACE_NME.pdb +90 -0
  29. soursop-0.2.6/soursop/data/test_data/cap_tests/ACE_NME_multichain.pdb +264 -0
  30. soursop-0.2.6/soursop/data/test_data/cap_tests/ACE_NME_start_at_5.pdb +90 -0
  31. soursop-0.2.6/soursop/data/test_data/cap_tests/ACE_UCAP.pdb +85 -0
  32. soursop-0.2.6/soursop/data/test_data/cap_tests/FOR_NH2.pdb +84 -0
  33. soursop-0.2.6/soursop/data/test_data/cap_tests/FOR_NME.pdb +87 -0
  34. soursop-0.2.6/soursop/data/test_data/cap_tests/FOR_UCAP.pdb +82 -0
  35. soursop-0.2.6/soursop/data/test_data/cap_tests/UCAP_NH2.pdb +83 -0
  36. soursop-0.2.6/soursop/data/test_data/cap_tests/UCAP_NME.pdb +86 -0
  37. soursop-0.2.6/soursop/data/test_data/cap_tests/UCAP_UCAP.pdb +81 -0
  38. soursop-0.2.6/soursop/data/test_data/cap_tests/__START.pdb +48 -0
  39. soursop-0.2.6/soursop/data/test_data/ctl9.pdb +1486 -0
  40. soursop-0.2.6/soursop/data/test_data/ctl9.xtc +0 -0
  41. soursop-0.2.6/soursop/data/test_data/gromacs1chain/top.pdb +945 -0
  42. soursop-0.2.6/soursop/data/test_data/gromacs1chain/traj.xtc +0 -0
  43. soursop-0.2.6/soursop/data/test_data/gromacs2chains/top.pdb +964 -0
  44. soursop-0.2.6/soursop/data/test_data/gromacs2chains/traj.xtc +0 -0
  45. soursop-0.2.6/soursop/data/test_data/gs6.dcd +0 -0
  46. soursop-0.2.6/soursop/data/test_data/gs6.pdb +86 -0
  47. soursop-0.2.6/soursop/data/test_data/gs6.xtc +0 -0
  48. soursop-0.2.6/soursop/data/test_data/gs6_distance_map_mean.npy +0 -0
  49. soursop-0.2.6/soursop/data/test_data/gs6_distance_map_std.npy +0 -0
  50. soursop-0.2.6/soursop/data/test_data/gs6_invalid_r1.pdb +86 -0
  51. soursop-0.2.6/soursop/data/test_data/ntl9.dcd +0 -0
  52. soursop-0.2.6/soursop/data/test_data/ntl9.pdb +914 -0
  53. soursop-0.2.6/soursop/data/test_data/ntl9.xtc +0 -0
  54. soursop-0.2.6/soursop/data/test_data/ntl9_distance_map_mean.npy +0 -0
  55. soursop-0.2.6/soursop/data/test_data/ntl9_distance_map_std.npy +0 -0
  56. soursop-0.2.6/soursop/data/test_data/pre_data/PRE_109_unweighted.csv +92 -0
  57. soursop-0.2.6/soursop/data/test_data/pre_data/PRE_119_unweighted.csv +92 -0
  58. soursop-0.2.6/soursop/data/test_data/pre_data/PRE_149_unweighted.csv +92 -0
  59. soursop-0.2.6/soursop/data/test_data/pre_data/PRE_61_unweighted.csv +92 -0
  60. soursop-0.2.6/soursop/data/test_data/pre_data/PRE_74_unweighted.csv +92 -0
  61. soursop-0.2.6/soursop/data/test_data/pre_data/PRE_96_unweighted.csv +92 -0
  62. soursop-0.2.6/soursop/data/test_data/sampling_quality/EV/1/__START.pdb +35 -0
  63. soursop-0.2.6/soursop/data/test_data/sampling_quality/EV/1/__traj.xtc +0 -0
  64. soursop-0.2.6/soursop/data/test_data/sampling_quality/EV/2/__START.pdb +35 -0
  65. soursop-0.2.6/soursop/data/test_data/sampling_quality/EV/2/__traj.xtc +0 -0
  66. soursop-0.2.6/soursop/data/test_data/sampling_quality/EV/3/__START.pdb +35 -0
  67. soursop-0.2.6/soursop/data/test_data/sampling_quality/EV/3/__traj.xtc +0 -0
  68. soursop-0.2.6/soursop/data/test_data/sampling_quality/WT/1/__START.pdb +35 -0
  69. soursop-0.2.6/soursop/data/test_data/sampling_quality/WT/1/__traj.xtc +0 -0
  70. soursop-0.2.6/soursop/data/test_data/sampling_quality/WT/2/__START.pdb +35 -0
  71. soursop-0.2.6/soursop/data/test_data/sampling_quality/WT/2/__traj.xtc +0 -0
  72. soursop-0.2.6/soursop/data/test_data/sampling_quality/WT/3/__START.pdb +35 -0
  73. soursop-0.2.6/soursop/data/test_data/sampling_quality/WT/3/__traj.xtc +0 -0
  74. soursop-0.2.6/soursop/plugins/__init__.py +4 -0
  75. soursop-0.2.6/soursop/plugins/sparrow_plugin/__init__.py +98 -0
  76. soursop-0.2.6/soursop/soursop.py +70 -0
  77. soursop-0.2.6/soursop/ssdata.py +144 -0
  78. soursop-0.2.6/soursop/ssexceptions.py +52 -0
  79. soursop-0.2.6/soursop/ssio.py +54 -0
  80. soursop-0.2.6/soursop/ssmutualinformation.py +136 -0
  81. soursop-0.2.6/soursop/ssnmr.py +666 -0
  82. soursop-0.2.6/soursop/sspolymer.py +53 -0
  83. soursop-0.2.6/soursop/sspre.py +228 -0
  84. soursop-0.2.6/soursop/ssprotein.py +5243 -0
  85. soursop-0.2.6/soursop/sssampling.py +1301 -0
  86. soursop-0.2.6/soursop/sstools.py +246 -0
  87. soursop-0.2.6/soursop/sstrajectory.py +1208 -0
  88. soursop-0.2.6/soursop/ssutils.py +194 -0
  89. soursop-0.2.6/soursop/tests/.ipynb_checkpoints/test_scratchpad-checkpoint.ipynb +627 -0
  90. soursop-0.2.6/soursop/tests/.ipynb_checkpoints/test_ssproteins-checkpoint.py +1027 -0
  91. soursop-0.2.6/soursop/tests/__init__.py +3 -0
  92. soursop-0.2.6/soursop/tests/conftest.py +101 -0
  93. soursop-0.2.6/soursop/tests/test_caps.py +56 -0
  94. soursop-0.2.6/soursop/tests/test_numbering.py +47 -0
  95. soursop-0.2.6/soursop/tests/test_scratchpad.ipynb +892 -0
  96. soursop-0.2.6/soursop/tests/test_soursop.py +46 -0
  97. soursop-0.2.6/soursop/tests/test_ssmutual_information.py +30 -0
  98. soursop-0.2.6/soursop/tests/test_ssnmr.py +187 -0
  99. soursop-0.2.6/soursop/tests/test_ssnmr_extended.py +60 -0
  100. soursop-0.2.6/soursop/tests/test_sspre.py +38 -0
  101. soursop-0.2.6/soursop/tests/test_ssproteins.py +1082 -0
  102. soursop-0.2.6/soursop/tests/test_sssampling.py +102 -0
  103. soursop-0.2.6/soursop/tests/test_sstrajectory.py +505 -0
  104. soursop-0.2.6/soursop/tests/test_ssutils.py +38 -0
soursop-0.2.6/LICENSE ADDED
@@ -0,0 +1,57 @@
1
+
2
+ GNU LESSER GENERAL PUBLIC LICENSE
3
+ Version 3, 29 June 2007
4
+
5
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
6
+
7
+ Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
8
+
9
+ This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below.
10
+
11
+ 0. Additional Definitions.
12
+ As used herein, “this License” refers to version 3 of the GNU Lesser General Public License, and the “GNU GPL” refers to version 3 of the GNU General Public License.
13
+
14
+ “The Library” refers to a covered work governed by this License, other than an Application or a Combined Work as defined below.
15
+
16
+ An “Application” is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library.
17
+
18
+ A “Combined Work” is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the “Linked Version”.
19
+
20
+ The “Minimal Corresponding Source” for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version.
21
+
22
+ The “Corresponding Application Code” for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work.
23
+
24
+ 1. Exception to Section 3 of the GNU GPL.
25
+ You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL.
26
+
27
+ 2. Conveying Modified Versions.
28
+ If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version:
29
+
30
+ a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or
31
+ b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy.
32
+ 3. Object Code Incorporating Material from Library Header Files.
33
+ The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following:
34
+
35
+ a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License.
36
+ b) Accompany the object code with a copy of the GNU GPL and this license document.
37
+ 4. Combined Works.
38
+ You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following:
39
+
40
+ a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License.
41
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license document.
42
+ c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document.
43
+ d) Do one of the following:
44
+ 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.
45
+ 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version.
46
+ e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.)
47
+ 5. Combined Libraries.
48
+ You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following:
49
+
50
+ a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License.
51
+ b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.
52
+ 6. Revised Versions of the GNU Lesser General Public License.
53
+ The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
54
+
55
+ Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation.
56
+
57
+ If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library.
@@ -0,0 +1,8 @@
1
+ include LICENSE
2
+ include MANIFEST.in
3
+
4
+ graft soursop
5
+ global-exclude *.py[cod] __pycache__ *.so
6
+
7
+ recursive-include soursop/data *include soursop/_version.py
8
+ include soursop/_version.py
soursop-0.2.6/PKG-INFO ADDED
@@ -0,0 +1,103 @@
1
+ Metadata-Version: 2.1
2
+ Name: SOURSOP
3
+ Version: 0.2.6
4
+ Summary: Simulation analysis package for working with disordered proteins
5
+ Author-email: Alex Holehouse <alex.holehouse@wustl.edu>
6
+ License: LGPLv3
7
+ Requires-Python: >=3.7
8
+ Description-Content-Type: text/markdown
9
+ License-File: LICENSE
10
+ Requires-Dist: numpy>=1.20.0
11
+ Requires-Dist: scipy>=1.5.0
12
+ Requires-Dist: cython
13
+ Requires-Dist: mdtraj>=1.9.5
14
+ Requires-Dist: pandas>=0.23.0
15
+ Requires-Dist: threadpoolctl>=2.2.0
16
+ Requires-Dist: natsort
17
+ Requires-Dist: matplotlib
18
+ Provides-Extra: test
19
+ Requires-Dist: pytest>=6.1.2; extra == "test"
20
+
21
+ SOURSOP
22
+ ==============================
23
+ [![Build Status](https://github.com/jaredl7/soursop/actions/workflows/soursop-ci.yml/badge.svg?branch=master)](https://github.com/jaredl7/soursop/actions)
24
+ [![codecov](https://codecov.io/gh/jaredl7/soursop/branch/master/graph/badge.svg?token=RHGII0235L)](https://codecov.io/gh/jaredl7/soursop)
25
+ [![Documentation Status](https://readthedocs.org/projects/soursop/badge/?version=latest)](https://soursop.readthedocs.io/en/latest/?badge=latest)
26
+ ## ABOUT
27
+ SOURSOP is a Python-based simulation analysis package for working with intrinsically disordered and unfolded proteins. It is built on top of [mdtraj](https://mdtraj.org/), and was developed by Jared Lalmansingh and Alex Holehouse.
28
+
29
+ The current stable release candidate on PyPI is 0.2.6 (November 2024).
30
+
31
+ ## DOCUMENTATION
32
+ All documentation, including installation information [can be found here](https://soursop.readthedocs.io/).
33
+
34
+ ## ERRORS, FEATURES, REQUESTS
35
+ If you find a bug, typo, or error [please raise an issue or GitHub](https://github.com/holehouse-lab/soursop/issues).
36
+
37
+ If you wish to add a new feature, please see our Development information in the docs (especially for adding plugins).
38
+
39
+ ## MISCELLANEOUS
40
+ * As of right now, the continuous integration fails because of a specific mismatch in how an edge-case error is handled between different versions of mdtraj. All other tests are passing and SOURSOP is ready for production. Do not be alarmed by the `failing` status above!
41
+
42
+ ## PUBLICATION
43
+ To read about SOURSOP please see our paper:
44
+
45
+ Lalmansingh, J. M., Keeley, A. T., Ruff, K. M., Pappu, R. V. & Holehouse, A. S. SOURSOP: A Python Package for the Analysis of Simulations of Intrinsically Disordered Proteins. J. Chem. Theory Comput. (2023). doi:10.1021/acs.jctc.3c00190
46
+
47
+ * [Journal link](https://pubs.acs.org/doi/full/10.1021/acs.jctc.3c00190)
48
+ * [Paper PDF](https://www.dropbox.com/s/bd5szapvxpn83r6/soursop_jctc.pdf?dl=0)
49
+
50
+ #### Copyright
51
+ Copyright (c) 2015-2024 under the GNU LESSER GENERAL PUBLIC LICENSE
52
+
53
+ # Changelog
54
+ #### Update November 2024 (0.2.6)
55
+ * Major update to SOURSOP.
56
+ * Explicit support for single-chain one-bead-per-residue trajectory loading that dramatically improves load time (~30x improvement)
57
+ * Officially added the `SSSampling` class and support for PENGUIN (see [Lotthammer & Holehouse, bioRxiv](https://www.biorxiv.org/content/10.1101/2024.11.06.622270v1.abstract)
58
+ * Added support for NH3 and FOR residue types in get_amino_acid_sequence()
59
+ * Switched over packaging to use `pyproject.toml` instead of `setup.py` and switched versioning to use v
60
+
61
+
62
+ #### Update March 2024 (0.2.5 [patch])
63
+ * Added `return_instantaneous_maps=False` keyword to `get_distance_maps()` function so we can return a [t,n,n] matrix where t = number of frames and n=number of residues for the instantaneous conformer-specific distance maps.
64
+
65
+
66
+ #### Update Feb 2024 (0.2.5)
67
+ * Removed periodic correction in SSProtein functions. We could provide periodic boundary condition checks for some but not all functions, and ensuring this flag was possible everywhere is not feasable. With this in mind, we opted to make a design decision to remove the `periodic` flag from the small number of functions that had it, such that there's no risk of a user forgetting and analyzing two distinct properties for a trajectory that requires PBC fixing where one analysis used `periodic=True` whereas another did not have this option. Now, the user must ensure their protein trajectories are corrected ahead of time. Note that we also added support for periodic=True for some of the SSTrajectory analysis functions, because in cases where multiple chains are present reconstructing a non-PBC trajectory becomes much more difficult. As such, intermolecular analysis does provide intrinsic PBC correction, whereas intramolecular analysis does not.
68
+
69
+ #### Update July 2023
70
+ * Added in `explicit_residue_checking` flag into SSTrajectory constructor, which makes it possible to use a solvated `.gro` file as an input file.
71
+
72
+ #### Update February 2023
73
+ * Added plugins example
74
+ * Added additional tests and finalized documentation
75
+
76
+ #### Update July 2022
77
+ For version 0.2.1 we introduce potentially breaking changes into how COM distances are reported.
78
+
79
+ ##### Details:
80
+ All center-of-mass (COM)-based functions now return distances (as before) and relative positions in x/y/z (this is new) in Angstroms, not nanometers. Previously, the various center-of-mass based functions that returned absolute positions (i.e. 3xn matrices of x/y/z vs frame number) returned them where x/y/z was in units nm. This is fine if you know this, but means if you manually calculate distance between two COM vectors you'd get a distance in nanometers and not Angstroms. This is an unhelpful and unexpected behavior given all other distances are in Angstroms, so we have made the decision to fully update to Angstroms even for vector positions. This DOES NOT break any code internal to soursop, but if you were using COM positions to manually calculate distances these may need to be recalculated.
81
+
82
+ #### Update April 2022
83
+ For version 0.1.9 the documentation has been extensively extended
84
+
85
+ #### Update July 2021
86
+ CAMPARITraj is SOURSOP! For the final release we have re-named and re-branded CAMPARITraj as SOURSOP. This change in the name serves two important purposes.
87
+
88
+ Firstly, CAMPARITraj was borne out of a collection of scripts and code built to work with CAMPARI. However, it has evolved into a stand-alone package for the analysis of all-atom simulations of IDPs and IDRs, and importantly, much of the analysis it performs can also be done in CAMPARI. As such, we felt it was important to decoupled SOURSOP from CAMPARI, both to avoid the implication that CAMPARI cannot perform analyses itself, and to avoid a scenario in which it may appear that this package only works with CAMPARI simulations.
89
+
90
+ Secondly, there is a long, rich tradition of naming software tools after drinks in the Pappu lab (CAMPARI, ABSINTH, CIDER, LASSI etc.). As such SOURSOP is first-author Jared's Caribbean twist on this theme!
91
+
92
+ ### WARNING
93
+ We are currently and systematically updating all of the CAMPARITraj codebase to SOURSOP. As such, for now, we recommend using a previous version. Note the SOURSOP change breaks all backwards compatibility. Sorry about that.
94
+
95
+ #### Update December 2020
96
+ Release 0.1.2 includes updated support to ensure CAMPARITraj will continue to work with MDTraj 1.9.5, as well as numerous additional updated.
97
+
98
+ #### Update May 2019
99
+ This is the *development* repository of CAMPARITraj and SHOULD NOT be used for production. Seriously, it is being modified constantly and with no building requirements during code pushes. If you want a building copy PLEASE contact Alex directly! [last touched June 24th 2019].
100
+
101
+ #### Acknowledgements
102
+ Project based on the
103
+ [Computational Molecular Science Python Cookiecutter](https://github.com/molssi/cookiecutter-cms) version 1.0.
@@ -0,0 +1,83 @@
1
+ SOURSOP
2
+ ==============================
3
+ [![Build Status](https://github.com/jaredl7/soursop/actions/workflows/soursop-ci.yml/badge.svg?branch=master)](https://github.com/jaredl7/soursop/actions)
4
+ [![codecov](https://codecov.io/gh/jaredl7/soursop/branch/master/graph/badge.svg?token=RHGII0235L)](https://codecov.io/gh/jaredl7/soursop)
5
+ [![Documentation Status](https://readthedocs.org/projects/soursop/badge/?version=latest)](https://soursop.readthedocs.io/en/latest/?badge=latest)
6
+ ## ABOUT
7
+ SOURSOP is a Python-based simulation analysis package for working with intrinsically disordered and unfolded proteins. It is built on top of [mdtraj](https://mdtraj.org/), and was developed by Jared Lalmansingh and Alex Holehouse.
8
+
9
+ The current stable release candidate on PyPI is 0.2.6 (November 2024).
10
+
11
+ ## DOCUMENTATION
12
+ All documentation, including installation information [can be found here](https://soursop.readthedocs.io/).
13
+
14
+ ## ERRORS, FEATURES, REQUESTS
15
+ If you find a bug, typo, or error [please raise an issue or GitHub](https://github.com/holehouse-lab/soursop/issues).
16
+
17
+ If you wish to add a new feature, please see our Development information in the docs (especially for adding plugins).
18
+
19
+ ## MISCELLANEOUS
20
+ * As of right now, the continuous integration fails because of a specific mismatch in how an edge-case error is handled between different versions of mdtraj. All other tests are passing and SOURSOP is ready for production. Do not be alarmed by the `failing` status above!
21
+
22
+ ## PUBLICATION
23
+ To read about SOURSOP please see our paper:
24
+
25
+ Lalmansingh, J. M., Keeley, A. T., Ruff, K. M., Pappu, R. V. & Holehouse, A. S. SOURSOP: A Python Package for the Analysis of Simulations of Intrinsically Disordered Proteins. J. Chem. Theory Comput. (2023). doi:10.1021/acs.jctc.3c00190
26
+
27
+ * [Journal link](https://pubs.acs.org/doi/full/10.1021/acs.jctc.3c00190)
28
+ * [Paper PDF](https://www.dropbox.com/s/bd5szapvxpn83r6/soursop_jctc.pdf?dl=0)
29
+
30
+ #### Copyright
31
+ Copyright (c) 2015-2024 under the GNU LESSER GENERAL PUBLIC LICENSE
32
+
33
+ # Changelog
34
+ #### Update November 2024 (0.2.6)
35
+ * Major update to SOURSOP.
36
+ * Explicit support for single-chain one-bead-per-residue trajectory loading that dramatically improves load time (~30x improvement)
37
+ * Officially added the `SSSampling` class and support for PENGUIN (see [Lotthammer & Holehouse, bioRxiv](https://www.biorxiv.org/content/10.1101/2024.11.06.622270v1.abstract)
38
+ * Added support for NH3 and FOR residue types in get_amino_acid_sequence()
39
+ * Switched over packaging to use `pyproject.toml` instead of `setup.py` and switched versioning to use v
40
+
41
+
42
+ #### Update March 2024 (0.2.5 [patch])
43
+ * Added `return_instantaneous_maps=False` keyword to `get_distance_maps()` function so we can return a [t,n,n] matrix where t = number of frames and n=number of residues for the instantaneous conformer-specific distance maps.
44
+
45
+
46
+ #### Update Feb 2024 (0.2.5)
47
+ * Removed periodic correction in SSProtein functions. We could provide periodic boundary condition checks for some but not all functions, and ensuring this flag was possible everywhere is not feasable. With this in mind, we opted to make a design decision to remove the `periodic` flag from the small number of functions that had it, such that there's no risk of a user forgetting and analyzing two distinct properties for a trajectory that requires PBC fixing where one analysis used `periodic=True` whereas another did not have this option. Now, the user must ensure their protein trajectories are corrected ahead of time. Note that we also added support for periodic=True for some of the SSTrajectory analysis functions, because in cases where multiple chains are present reconstructing a non-PBC trajectory becomes much more difficult. As such, intermolecular analysis does provide intrinsic PBC correction, whereas intramolecular analysis does not.
48
+
49
+ #### Update July 2023
50
+ * Added in `explicit_residue_checking` flag into SSTrajectory constructor, which makes it possible to use a solvated `.gro` file as an input file.
51
+
52
+ #### Update February 2023
53
+ * Added plugins example
54
+ * Added additional tests and finalized documentation
55
+
56
+ #### Update July 2022
57
+ For version 0.2.1 we introduce potentially breaking changes into how COM distances are reported.
58
+
59
+ ##### Details:
60
+ All center-of-mass (COM)-based functions now return distances (as before) and relative positions in x/y/z (this is new) in Angstroms, not nanometers. Previously, the various center-of-mass based functions that returned absolute positions (i.e. 3xn matrices of x/y/z vs frame number) returned them where x/y/z was in units nm. This is fine if you know this, but means if you manually calculate distance between two COM vectors you'd get a distance in nanometers and not Angstroms. This is an unhelpful and unexpected behavior given all other distances are in Angstroms, so we have made the decision to fully update to Angstroms even for vector positions. This DOES NOT break any code internal to soursop, but if you were using COM positions to manually calculate distances these may need to be recalculated.
61
+
62
+ #### Update April 2022
63
+ For version 0.1.9 the documentation has been extensively extended
64
+
65
+ #### Update July 2021
66
+ CAMPARITraj is SOURSOP! For the final release we have re-named and re-branded CAMPARITraj as SOURSOP. This change in the name serves two important purposes.
67
+
68
+ Firstly, CAMPARITraj was borne out of a collection of scripts and code built to work with CAMPARI. However, it has evolved into a stand-alone package for the analysis of all-atom simulations of IDPs and IDRs, and importantly, much of the analysis it performs can also be done in CAMPARI. As such, we felt it was important to decoupled SOURSOP from CAMPARI, both to avoid the implication that CAMPARI cannot perform analyses itself, and to avoid a scenario in which it may appear that this package only works with CAMPARI simulations.
69
+
70
+ Secondly, there is a long, rich tradition of naming software tools after drinks in the Pappu lab (CAMPARI, ABSINTH, CIDER, LASSI etc.). As such SOURSOP is first-author Jared's Caribbean twist on this theme!
71
+
72
+ ### WARNING
73
+ We are currently and systematically updating all of the CAMPARITraj codebase to SOURSOP. As such, for now, we recommend using a previous version. Note the SOURSOP change breaks all backwards compatibility. Sorry about that.
74
+
75
+ #### Update December 2020
76
+ Release 0.1.2 includes updated support to ensure CAMPARITraj will continue to work with MDTraj 1.9.5, as well as numerous additional updated.
77
+
78
+ #### Update May 2019
79
+ This is the *development* repository of CAMPARITraj and SHOULD NOT be used for production. Seriously, it is being modified constantly and with no building requirements during code pushes. If you want a building copy PLEASE contact Alex directly! [last touched June 24th 2019].
80
+
81
+ #### Acknowledgements
82
+ Project based on the
83
+ [Computational Molecular Science Python Cookiecutter](https://github.com/molssi/cookiecutter-cms) version 1.0.
@@ -0,0 +1,103 @@
1
+ Metadata-Version: 2.1
2
+ Name: SOURSOP
3
+ Version: 0.2.6
4
+ Summary: Simulation analysis package for working with disordered proteins
5
+ Author-email: Alex Holehouse <alex.holehouse@wustl.edu>
6
+ License: LGPLv3
7
+ Requires-Python: >=3.7
8
+ Description-Content-Type: text/markdown
9
+ License-File: LICENSE
10
+ Requires-Dist: numpy>=1.20.0
11
+ Requires-Dist: scipy>=1.5.0
12
+ Requires-Dist: cython
13
+ Requires-Dist: mdtraj>=1.9.5
14
+ Requires-Dist: pandas>=0.23.0
15
+ Requires-Dist: threadpoolctl>=2.2.0
16
+ Requires-Dist: natsort
17
+ Requires-Dist: matplotlib
18
+ Provides-Extra: test
19
+ Requires-Dist: pytest>=6.1.2; extra == "test"
20
+
21
+ SOURSOP
22
+ ==============================
23
+ [![Build Status](https://github.com/jaredl7/soursop/actions/workflows/soursop-ci.yml/badge.svg?branch=master)](https://github.com/jaredl7/soursop/actions)
24
+ [![codecov](https://codecov.io/gh/jaredl7/soursop/branch/master/graph/badge.svg?token=RHGII0235L)](https://codecov.io/gh/jaredl7/soursop)
25
+ [![Documentation Status](https://readthedocs.org/projects/soursop/badge/?version=latest)](https://soursop.readthedocs.io/en/latest/?badge=latest)
26
+ ## ABOUT
27
+ SOURSOP is a Python-based simulation analysis package for working with intrinsically disordered and unfolded proteins. It is built on top of [mdtraj](https://mdtraj.org/), and was developed by Jared Lalmansingh and Alex Holehouse.
28
+
29
+ The current stable release candidate on PyPI is 0.2.6 (November 2024).
30
+
31
+ ## DOCUMENTATION
32
+ All documentation, including installation information [can be found here](https://soursop.readthedocs.io/).
33
+
34
+ ## ERRORS, FEATURES, REQUESTS
35
+ If you find a bug, typo, or error [please raise an issue or GitHub](https://github.com/holehouse-lab/soursop/issues).
36
+
37
+ If you wish to add a new feature, please see our Development information in the docs (especially for adding plugins).
38
+
39
+ ## MISCELLANEOUS
40
+ * As of right now, the continuous integration fails because of a specific mismatch in how an edge-case error is handled between different versions of mdtraj. All other tests are passing and SOURSOP is ready for production. Do not be alarmed by the `failing` status above!
41
+
42
+ ## PUBLICATION
43
+ To read about SOURSOP please see our paper:
44
+
45
+ Lalmansingh, J. M., Keeley, A. T., Ruff, K. M., Pappu, R. V. & Holehouse, A. S. SOURSOP: A Python Package for the Analysis of Simulations of Intrinsically Disordered Proteins. J. Chem. Theory Comput. (2023). doi:10.1021/acs.jctc.3c00190
46
+
47
+ * [Journal link](https://pubs.acs.org/doi/full/10.1021/acs.jctc.3c00190)
48
+ * [Paper PDF](https://www.dropbox.com/s/bd5szapvxpn83r6/soursop_jctc.pdf?dl=0)
49
+
50
+ #### Copyright
51
+ Copyright (c) 2015-2024 under the GNU LESSER GENERAL PUBLIC LICENSE
52
+
53
+ # Changelog
54
+ #### Update November 2024 (0.2.6)
55
+ * Major update to SOURSOP.
56
+ * Explicit support for single-chain one-bead-per-residue trajectory loading that dramatically improves load time (~30x improvement)
57
+ * Officially added the `SSSampling` class and support for PENGUIN (see [Lotthammer & Holehouse, bioRxiv](https://www.biorxiv.org/content/10.1101/2024.11.06.622270v1.abstract)
58
+ * Added support for NH3 and FOR residue types in get_amino_acid_sequence()
59
+ * Switched over packaging to use `pyproject.toml` instead of `setup.py` and switched versioning to use v
60
+
61
+
62
+ #### Update March 2024 (0.2.5 [patch])
63
+ * Added `return_instantaneous_maps=False` keyword to `get_distance_maps()` function so we can return a [t,n,n] matrix where t = number of frames and n=number of residues for the instantaneous conformer-specific distance maps.
64
+
65
+
66
+ #### Update Feb 2024 (0.2.5)
67
+ * Removed periodic correction in SSProtein functions. We could provide periodic boundary condition checks for some but not all functions, and ensuring this flag was possible everywhere is not feasable. With this in mind, we opted to make a design decision to remove the `periodic` flag from the small number of functions that had it, such that there's no risk of a user forgetting and analyzing two distinct properties for a trajectory that requires PBC fixing where one analysis used `periodic=True` whereas another did not have this option. Now, the user must ensure their protein trajectories are corrected ahead of time. Note that we also added support for periodic=True for some of the SSTrajectory analysis functions, because in cases where multiple chains are present reconstructing a non-PBC trajectory becomes much more difficult. As such, intermolecular analysis does provide intrinsic PBC correction, whereas intramolecular analysis does not.
68
+
69
+ #### Update July 2023
70
+ * Added in `explicit_residue_checking` flag into SSTrajectory constructor, which makes it possible to use a solvated `.gro` file as an input file.
71
+
72
+ #### Update February 2023
73
+ * Added plugins example
74
+ * Added additional tests and finalized documentation
75
+
76
+ #### Update July 2022
77
+ For version 0.2.1 we introduce potentially breaking changes into how COM distances are reported.
78
+
79
+ ##### Details:
80
+ All center-of-mass (COM)-based functions now return distances (as before) and relative positions in x/y/z (this is new) in Angstroms, not nanometers. Previously, the various center-of-mass based functions that returned absolute positions (i.e. 3xn matrices of x/y/z vs frame number) returned them where x/y/z was in units nm. This is fine if you know this, but means if you manually calculate distance between two COM vectors you'd get a distance in nanometers and not Angstroms. This is an unhelpful and unexpected behavior given all other distances are in Angstroms, so we have made the decision to fully update to Angstroms even for vector positions. This DOES NOT break any code internal to soursop, but if you were using COM positions to manually calculate distances these may need to be recalculated.
81
+
82
+ #### Update April 2022
83
+ For version 0.1.9 the documentation has been extensively extended
84
+
85
+ #### Update July 2021
86
+ CAMPARITraj is SOURSOP! For the final release we have re-named and re-branded CAMPARITraj as SOURSOP. This change in the name serves two important purposes.
87
+
88
+ Firstly, CAMPARITraj was borne out of a collection of scripts and code built to work with CAMPARI. However, it has evolved into a stand-alone package for the analysis of all-atom simulations of IDPs and IDRs, and importantly, much of the analysis it performs can also be done in CAMPARI. As such, we felt it was important to decoupled SOURSOP from CAMPARI, both to avoid the implication that CAMPARI cannot perform analyses itself, and to avoid a scenario in which it may appear that this package only works with CAMPARI simulations.
89
+
90
+ Secondly, there is a long, rich tradition of naming software tools after drinks in the Pappu lab (CAMPARI, ABSINTH, CIDER, LASSI etc.). As such SOURSOP is first-author Jared's Caribbean twist on this theme!
91
+
92
+ ### WARNING
93
+ We are currently and systematically updating all of the CAMPARITraj codebase to SOURSOP. As such, for now, we recommend using a previous version. Note the SOURSOP change breaks all backwards compatibility. Sorry about that.
94
+
95
+ #### Update December 2020
96
+ Release 0.1.2 includes updated support to ensure CAMPARITraj will continue to work with MDTraj 1.9.5, as well as numerous additional updated.
97
+
98
+ #### Update May 2019
99
+ This is the *development* repository of CAMPARITraj and SHOULD NOT be used for production. Seriously, it is being modified constantly and with no building requirements during code pushes. If you want a building copy PLEASE contact Alex directly! [last touched June 24th 2019].
100
+
101
+ #### Acknowledgements
102
+ Project based on the
103
+ [Computational Molecular Science Python Cookiecutter](https://github.com/molssi/cookiecutter-cms) version 1.0.
@@ -0,0 +1,103 @@
1
+ LICENSE
2
+ MANIFEST.in
3
+ README.md
4
+ pyproject.toml
5
+ setup.cfg
6
+ SOURSOP.egg-info/PKG-INFO
7
+ SOURSOP.egg-info/SOURCES.txt
8
+ SOURSOP.egg-info/dependency_links.txt
9
+ SOURSOP.egg-info/not-zip-safe
10
+ SOURSOP.egg-info/requires.txt
11
+ SOURSOP.egg-info/top_level.txt
12
+ soursop/__init__.py
13
+ soursop/_internal_data.py
14
+ soursop/_version.py
15
+ soursop/configs.py
16
+ soursop/soursop.py
17
+ soursop/ssdata.py
18
+ soursop/ssexceptions.py
19
+ soursop/ssio.py
20
+ soursop/ssmutualinformation.py
21
+ soursop/ssnmr.py
22
+ soursop/sspolymer.py
23
+ soursop/sspre.py
24
+ soursop/ssprotein.py
25
+ soursop/sssampling.py
26
+ soursop/sstools.py
27
+ soursop/sstrajectory.py
28
+ soursop/ssutils.py
29
+ soursop/.ipynb_checkpoints/Untitled-checkpoint.ipynb
30
+ soursop/data/SASA_SUMMARY.csv
31
+ soursop/data/bbseg2.dat
32
+ soursop/data/phi_excluded_volume_tripeptides.pickle
33
+ soursop/data/psi_excluded_volume_tripeptides.pickle
34
+ soursop/data/test_data/all_residues.pdb
35
+ soursop/data/test_data/all_residues.xtc
36
+ soursop/data/test_data/ctl9.pdb
37
+ soursop/data/test_data/ctl9.xtc
38
+ soursop/data/test_data/gs6.dcd
39
+ soursop/data/test_data/gs6.pdb
40
+ soursop/data/test_data/gs6.xtc
41
+ soursop/data/test_data/gs6_distance_map_mean.npy
42
+ soursop/data/test_data/gs6_distance_map_std.npy
43
+ soursop/data/test_data/gs6_invalid_r1.pdb
44
+ soursop/data/test_data/ntl9.dcd
45
+ soursop/data/test_data/ntl9.pdb
46
+ soursop/data/test_data/ntl9.xtc
47
+ soursop/data/test_data/ntl9_distance_map_mean.npy
48
+ soursop/data/test_data/ntl9_distance_map_std.npy
49
+ soursop/data/test_data/.ipynb_checkpoints/Untitled-checkpoint.ipynb
50
+ soursop/data/test_data/cap_tests/ACD_start_1.pdb
51
+ soursop/data/test_data/cap_tests/ACD_start_10.pdb
52
+ soursop/data/test_data/cap_tests/ACE_NH2.pdb
53
+ soursop/data/test_data/cap_tests/ACE_NME.pdb
54
+ soursop/data/test_data/cap_tests/ACE_NME_multichain.pdb
55
+ soursop/data/test_data/cap_tests/ACE_NME_start_at_5.pdb
56
+ soursop/data/test_data/cap_tests/ACE_UCAP.pdb
57
+ soursop/data/test_data/cap_tests/FOR_NH2.pdb
58
+ soursop/data/test_data/cap_tests/FOR_NME.pdb
59
+ soursop/data/test_data/cap_tests/FOR_UCAP.pdb
60
+ soursop/data/test_data/cap_tests/UCAP_NH2.pdb
61
+ soursop/data/test_data/cap_tests/UCAP_NME.pdb
62
+ soursop/data/test_data/cap_tests/UCAP_UCAP.pdb
63
+ soursop/data/test_data/cap_tests/__START.pdb
64
+ soursop/data/test_data/gromacs1chain/top.pdb
65
+ soursop/data/test_data/gromacs1chain/traj.xtc
66
+ soursop/data/test_data/gromacs2chains/top.pdb
67
+ soursop/data/test_data/gromacs2chains/traj.xtc
68
+ soursop/data/test_data/pre_data/PRE_109_unweighted.csv
69
+ soursop/data/test_data/pre_data/PRE_119_unweighted.csv
70
+ soursop/data/test_data/pre_data/PRE_149_unweighted.csv
71
+ soursop/data/test_data/pre_data/PRE_61_unweighted.csv
72
+ soursop/data/test_data/pre_data/PRE_74_unweighted.csv
73
+ soursop/data/test_data/pre_data/PRE_96_unweighted.csv
74
+ soursop/data/test_data/sampling_quality/EV/1/__START.pdb
75
+ soursop/data/test_data/sampling_quality/EV/1/__traj.xtc
76
+ soursop/data/test_data/sampling_quality/EV/2/__START.pdb
77
+ soursop/data/test_data/sampling_quality/EV/2/__traj.xtc
78
+ soursop/data/test_data/sampling_quality/EV/3/__START.pdb
79
+ soursop/data/test_data/sampling_quality/EV/3/__traj.xtc
80
+ soursop/data/test_data/sampling_quality/WT/1/__START.pdb
81
+ soursop/data/test_data/sampling_quality/WT/1/__traj.xtc
82
+ soursop/data/test_data/sampling_quality/WT/2/__START.pdb
83
+ soursop/data/test_data/sampling_quality/WT/2/__traj.xtc
84
+ soursop/data/test_data/sampling_quality/WT/3/__START.pdb
85
+ soursop/data/test_data/sampling_quality/WT/3/__traj.xtc
86
+ soursop/plugins/__init__.py
87
+ soursop/plugins/sparrow_plugin/__init__.py
88
+ soursop/tests/__init__.py
89
+ soursop/tests/conftest.py
90
+ soursop/tests/test_caps.py
91
+ soursop/tests/test_numbering.py
92
+ soursop/tests/test_scratchpad.ipynb
93
+ soursop/tests/test_soursop.py
94
+ soursop/tests/test_ssmutual_information.py
95
+ soursop/tests/test_ssnmr.py
96
+ soursop/tests/test_ssnmr_extended.py
97
+ soursop/tests/test_sspre.py
98
+ soursop/tests/test_ssproteins.py
99
+ soursop/tests/test_sssampling.py
100
+ soursop/tests/test_sstrajectory.py
101
+ soursop/tests/test_ssutils.py
102
+ soursop/tests/.ipynb_checkpoints/test_scratchpad-checkpoint.ipynb
103
+ soursop/tests/.ipynb_checkpoints/test_ssproteins-checkpoint.py
@@ -0,0 +1,11 @@
1
+ numpy>=1.20.0
2
+ scipy>=1.5.0
3
+ cython
4
+ mdtraj>=1.9.5
5
+ pandas>=0.23.0
6
+ threadpoolctl>=2.2.0
7
+ natsort
8
+ matplotlib
9
+
10
+ [test]
11
+ pytest>=6.1.2
@@ -0,0 +1 @@
1
+ soursop
@@ -0,0 +1,68 @@
1
+ [build-system]
2
+
3
+ # delete cython/numpy if not needed
4
+ requires = ["setuptools>=61", "versioningit~=2.0", "numpy", ]
5
+ build-backend = "setuptools.build_meta"
6
+
7
+
8
+ # define project info
9
+ [project]
10
+ name = "SOURSOP"
11
+ dynamic = ["version"]
12
+ description = "Simulation analysis package for working with disordered proteins"
13
+ authors = [
14
+ {name = "Alex Holehouse", email = "alex.holehouse@wustl.edu"}
15
+ ]
16
+ license = {text = "LGPLv3"}
17
+ readme = "README.md"
18
+ requires-python = ">=3.7"
19
+
20
+ # add in as needed
21
+ dependencies = [
22
+ "numpy>=1.20.0",
23
+ "scipy>=1.5.0",
24
+ "cython",
25
+ "mdtraj>=1.9.5",
26
+ "pandas>=0.23.0",
27
+ "threadpoolctl>=2.2.0",
28
+ "natsort",
29
+ "matplotlib",
30
+ ]
31
+
32
+ [project.optional-dependencies]
33
+ test = [
34
+ "pytest>=6.1.2",
35
+ ]
36
+
37
+
38
+ [tool.setuptools]
39
+ zip-safe = false
40
+ include-package-data = true
41
+
42
+ [tool.setuptools.packages.find]
43
+ namespaces = true
44
+ where = ["."]
45
+ include = ["soursop", "soursop*"] # Discover all sub-packages inside the main package
46
+
47
+ [tool.setuptools.package-data]
48
+ soursop = [
49
+ "py.typed"
50
+ ]
51
+
52
+ [tool.versioningit]
53
+ default-version = "1+unknown"
54
+
55
+ [tool.versioningit.format]
56
+ distance = "{base_version}+{distance}.{vcs}{rev}"
57
+ dirty = "{base_version}+{distance}.{vcs}{rev}.dirty"
58
+ distance-dirty = "{base_version}+{distance}.{vcs}{rev}.dirty"
59
+
60
+ [tool.versioningit.vcs]
61
+ # The method key:
62
+ method = "git" # <- The method name
63
+ # Parameters to pass to the method:
64
+ match = ["*"]
65
+ default-tag = "1.0.0"
66
+
67
+ [tool.versioningit.write]
68
+ file = "soursop/_version.py"
@@ -0,0 +1,20 @@
1
+ [coverage:run]
2
+ omit =
3
+ */tests/*
4
+ metapredict/_version.py
5
+
6
+ [yapf]
7
+ COLUMN_LIMIT = 119
8
+ INDENT_WIDTH = 4
9
+ USE_TABS = False
10
+
11
+ [flake8]
12
+ max-line-length = 119
13
+
14
+ [aliases]
15
+ test = pytest
16
+
17
+ [egg_info]
18
+ tag_build =
19
+ tag_date = 0
20
+
@@ -0,0 +1,6 @@
1
+ {
2
+ "cells": [],
3
+ "metadata": {},
4
+ "nbformat": 4,
5
+ "nbformat_minor": 5
6
+ }
@@ -0,0 +1,33 @@
1
+ ## _____ ____ _ _ _____ _____ ____ _____
2
+ ## / ____|/ __ \| | | | __ \ / ____|/ __ \| __ \
3
+ ## | (___ | | | | | | | |__) | (___ | | | | |__) |
4
+ ## \___ \| | | | | | | _ / \___ \| | | | ___/
5
+ ## ____) | |__| | |__| | | \ \ ____) | |__| | |
6
+ ## |_____/ \____/ \____/|_| \_\_____/ \____/|_|
7
+
8
+ ## Alex Holehouse (Pappu Lab and Holehouse Lab) and Jared Lalmansing (Pappu lab)
9
+ ## Simulation analysis package
10
+ ## Copyright 2014 - 2022
11
+ ##
12
+
13
+ import os
14
+
15
+ # Add imports here
16
+ from soursop import *
17
+
18
+ # Generate _version.py if missing and in the Read the Docs environment
19
+ if os.getenv("READTHEDOCS") == "True" and not os.path.isfile('../soursop/_version.py'):
20
+ import versioningit
21
+ __version__ = versioningit.get_version('../')
22
+ else:
23
+ from soursop._version import __version__
24
+
25
+ # code that allows access to the data directory
26
+ _ROOT = os.path.abspath(os.path.dirname(__file__))
27
+ def get_data(path):
28
+ return os.path.join(_ROOT, 'data', path)
29
+
30
+
31
+ def get_version():
32
+ return "%s - %s" % (str(__version__), str(__git_revision__))
33
+