gatewizard 1.0.0__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 (112) hide show
  1. gatewizard-1.0.0/LICENSE +21 -0
  2. gatewizard-1.0.0/MANIFEST.in +18 -0
  3. gatewizard-1.0.0/PKG-INFO +256 -0
  4. gatewizard-1.0.0/README.md +202 -0
  5. gatewizard-1.0.0/gatewizard/__init__.py +48 -0
  6. gatewizard-1.0.0/gatewizard/core/__init__.py +29 -0
  7. gatewizard-1.0.0/gatewizard/core/builder.py +1369 -0
  8. gatewizard-1.0.0/gatewizard/core/file_manager.py +396 -0
  9. gatewizard-1.0.0/gatewizard/core/job_monitor.py +546 -0
  10. gatewizard-1.0.0/gatewizard/core/preparation.py +998 -0
  11. gatewizard-1.0.0/gatewizard/gui/__init__.py +18 -0
  12. gatewizard-1.0.0/gatewizard/gui/app.py +2006 -0
  13. gatewizard-1.0.0/gatewizard/gui/base/__init__.py +5 -0
  14. gatewizard-1.0.0/gatewizard/gui/base/callback_manager.py +94 -0
  15. gatewizard-1.0.0/gatewizard/gui/constants.py +285 -0
  16. gatewizard-1.0.0/gatewizard/gui/frames/__init__.py +19 -0
  17. gatewizard-1.0.0/gatewizard/gui/frames/analysis.py +7332 -0
  18. gatewizard-1.0.0/gatewizard/gui/frames/builder_frame.py +1258 -0
  19. gatewizard-1.0.0/gatewizard/gui/frames/equilibration.py +3636 -0
  20. gatewizard-1.0.0/gatewizard/gui/frames/preparation_frame.py +2110 -0
  21. gatewizard-1.0.0/gatewizard/gui/frames/visualize.py +1198 -0
  22. gatewizard-1.0.0/gatewizard/gui/widgets/__init__.py +17 -0
  23. gatewizard-1.0.0/gatewizard/gui/widgets/leaflet_frame.py +350 -0
  24. gatewizard-1.0.0/gatewizard/gui/widgets/progress_tracker.py +1092 -0
  25. gatewizard-1.0.0/gatewizard/gui/widgets/propka_workflow_helper.py +1129 -0
  26. gatewizard-1.0.0/gatewizard/gui/widgets/searchable_combobox.py +367 -0
  27. gatewizard-1.0.0/gatewizard/gui/widgets/stage_tabs.py +352 -0
  28. gatewizard-1.0.0/gatewizard/main.py +155 -0
  29. gatewizard-1.0.0/gatewizard/tools/__init__.py +16 -0
  30. gatewizard-1.0.0/gatewizard/tools/equilibration.py +2515 -0
  31. gatewizard-1.0.0/gatewizard/tools/force_fields.py +408 -0
  32. gatewizard-1.0.0/gatewizard/tools/molecular_viewer.py +198 -0
  33. gatewizard-1.0.0/gatewizard/tools/validators.py +657 -0
  34. gatewizard-1.0.0/gatewizard/utils/__init__.py +47 -0
  35. gatewizard-1.0.0/gatewizard/utils/bilayer_utils.py +314 -0
  36. gatewizard-1.0.0/gatewizard/utils/config.py +407 -0
  37. gatewizard-1.0.0/gatewizard/utils/helpers.py +483 -0
  38. gatewizard-1.0.0/gatewizard/utils/logger.py +297 -0
  39. gatewizard-1.0.0/gatewizard/utils/namd_analysis.py +2463 -0
  40. gatewizard-1.0.0/gatewizard/utils/optional_deps.py +112 -0
  41. gatewizard-1.0.0/gatewizard/utils/protein_capping.py +583 -0
  42. gatewizard-1.0.0/gatewizard.egg-info/PKG-INFO +256 -0
  43. gatewizard-1.0.0/gatewizard.egg-info/SOURCES.txt +110 -0
  44. gatewizard-1.0.0/gatewizard.egg-info/dependency_links.txt +1 -0
  45. gatewizard-1.0.0/gatewizard.egg-info/entry_points.txt +2 -0
  46. gatewizard-1.0.0/gatewizard.egg-info/requires.txt +12 -0
  47. gatewizard-1.0.0/gatewizard.egg-info/top_level.txt +6 -0
  48. gatewizard-1.0.0/pyproject.toml +73 -0
  49. gatewizard-1.0.0/setup.cfg +4 -0
  50. gatewizard-1.0.0/tests/__init__.py +10 -0
  51. gatewizard-1.0.0/tests/analysis_examples/analysis_example_01.py +33 -0
  52. gatewizard-1.0.0/tests/analysis_examples/analysis_example_02.py +14 -0
  53. gatewizard-1.0.0/tests/analysis_examples/analysis_example_03.py +45 -0
  54. gatewizard-1.0.0/tests/analysis_examples/analysis_example_04.py +31 -0
  55. gatewizard-1.0.0/tests/analysis_examples/analysis_example_05.py +47 -0
  56. gatewizard-1.0.0/tests/analysis_examples/analysis_example_06.py +33 -0
  57. gatewizard-1.0.0/tests/analysis_examples/analysis_example_07.py +55 -0
  58. gatewizard-1.0.0/tests/analysis_examples/analysis_example_08.py +50 -0
  59. gatewizard-1.0.0/tests/analysis_examples/analysis_example_09.py +45 -0
  60. gatewizard-1.0.0/tests/analysis_examples/analysis_example_10.py +140 -0
  61. gatewizard-1.0.0/tests/builder_examples/builder_example_01.py +6 -0
  62. gatewizard-1.0.0/tests/builder_examples/builder_example_02.py +15 -0
  63. gatewizard-1.0.0/tests/builder_examples/builder_example_03.py +12 -0
  64. gatewizard-1.0.0/tests/builder_examples/builder_example_04.py +12 -0
  65. gatewizard-1.0.0/tests/builder_examples/builder_example_05.py +12 -0
  66. gatewizard-1.0.0/tests/builder_examples/builder_example_06.py +21 -0
  67. gatewizard-1.0.0/tests/builder_examples/builder_example_07.py +9 -0
  68. gatewizard-1.0.0/tests/builder_examples/builder_example_08.py +34 -0
  69. gatewizard-1.0.0/tests/builder_examples/builder_example_09.py +36 -0
  70. gatewizard-1.0.0/tests/builder_examples/builder_example_10.py +39 -0
  71. gatewizard-1.0.0/tests/builder_examples/builder_example_11.py +27 -0
  72. gatewizard-1.0.0/tests/builder_examples/builder_example_12.py +24 -0
  73. gatewizard-1.0.0/tests/builder_examples/builder_example_13.py +25 -0
  74. gatewizard-1.0.0/tests/builder_examples/builder_example_14.py +24 -0
  75. gatewizard-1.0.0/tests/builder_examples/builder_example_15.py +4 -0
  76. gatewizard-1.0.0/tests/builder_examples/builder_example_16.py +43 -0
  77. gatewizard-1.0.0/tests/builder_examples/builder_example_17.py +34 -0
  78. gatewizard-1.0.0/tests/equilibration_examples/equilibration_example_01.py +40 -0
  79. gatewizard-1.0.0/tests/equilibration_examples/equilibration_example_02.py +47 -0
  80. gatewizard-1.0.0/tests/equilibration_examples/equilibration_example_03.py +18 -0
  81. gatewizard-1.0.0/tests/equilibration_examples/equilibration_example_04.py +75 -0
  82. gatewizard-1.0.0/tests/equilibration_examples/equilibration_example_05.py +105 -0
  83. gatewizard-1.0.0/tests/equilibration_examples/equilibration_example_06.py +151 -0
  84. gatewizard-1.0.0/tests/equilibration_examples/equilibration_example_07.py +86 -0
  85. gatewizard-1.0.0/tests/equilibration_examples/popc_membrane/status_utils.py +95 -0
  86. gatewizard-1.0.0/tests/preparation_examples/preparation_example_01.py +4 -0
  87. gatewizard-1.0.0/tests/preparation_examples/preparation_example_02.py +4 -0
  88. gatewizard-1.0.0/tests/preparation_examples/preparation_example_03.py +10 -0
  89. gatewizard-1.0.0/tests/preparation_examples/preparation_example_04.py +34 -0
  90. gatewizard-1.0.0/tests/preparation_examples/preparation_example_05.py +30 -0
  91. gatewizard-1.0.0/tests/preparation_examples/preparation_example_06.py +11 -0
  92. gatewizard-1.0.0/tests/preparation_examples/preparation_example_07.py +5 -0
  93. gatewizard-1.0.0/tests/preparation_examples/preparation_example_08.py +17 -0
  94. gatewizard-1.0.0/tests/preparation_examples/preparation_example_09.py +18 -0
  95. gatewizard-1.0.0/tests/preparation_examples/preparation_example_10.py +19 -0
  96. gatewizard-1.0.0/tests/preparation_examples/preparation_example_11.py +10 -0
  97. gatewizard-1.0.0/tests/preparation_examples/preparation_example_12.py +13 -0
  98. gatewizard-1.0.0/tests/preparation_examples/preparation_example_13.py +51 -0
  99. gatewizard-1.0.0/tests/preparation_examples/preparation_example_14.py +146 -0
  100. gatewizard-1.0.0/tests/preparation_examples/preparation_example_15.py +23 -0
  101. gatewizard-1.0.0/tests/preparation_examples/preparation_example_16.py +6 -0
  102. gatewizard-1.0.0/tests/preparation_examples/preparation_example_17.py +32 -0
  103. gatewizard-1.0.0/tests/preparation_examples/preparation_example_18.py +48 -0
  104. gatewizard-1.0.0/tests/preparation_examples/preparation_example_19.py +30 -0
  105. gatewizard-1.0.0/tests/preparation_examples/preparation_example_20.py +66 -0
  106. gatewizard-1.0.0/tests/preparation_examples/preparation_example_21.py +30 -0
  107. gatewizard-1.0.0/tests/preparation_examples/preparation_example_22.py +54 -0
  108. gatewizard-1.0.0/tests/test_analysis.py +389 -0
  109. gatewizard-1.0.0/tests/test_builder.py +570 -0
  110. gatewizard-1.0.0/tests/test_equilibration.py +721 -0
  111. gatewizard-1.0.0/tests/test_new_api.py +448 -0
  112. gatewizard-1.0.0/tests/test_preparation.py +997 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Constanza González and Mauricio Bedoya
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,18 @@
1
+ # Exclude potentially problematic files and directories
2
+ include gatewizard/
3
+ recursive-include gatewizard *.py
4
+ recursive-include gatewizard/crystal_analysis *.cr *.yml *.lock *.md
5
+ include gatewizard/run_crystal_with_system_libs.sh
6
+ global-exclude *.pyc
7
+ global-exclude __pycache__
8
+ global-exclude *.log
9
+ global-exclude .git*
10
+ global-exclude *.pdb
11
+ global-exclude *.pka
12
+ prune equilibration
13
+ prune restraints
14
+ prune docs
15
+ exclude *.md
16
+ exclude test_*.py
17
+ exclude *.sh
18
+ exclude *.bat
@@ -0,0 +1,256 @@
1
+ Metadata-Version: 2.4
2
+ Name: gatewizard
3
+ Version: 1.0.0
4
+ Summary: A tool for membrane protein preparation and molecular dynamics analysis
5
+ Author-email: Constanza González <constanza.gonzalez.villagra@gmail.com>, Mauricio Bedoya <mbedoya@ucm.cl>
6
+ License: MIT License
7
+
8
+ Copyright (c) 2025 Constanza González and Mauricio Bedoya
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+
28
+ Classifier: Development Status :: 4 - Beta
29
+ Classifier: Intended Audience :: Science/Research
30
+ Classifier: License :: OSI Approved :: MIT License
31
+ Classifier: Operating System :: OS Independent
32
+ Classifier: Programming Language :: Python :: 3
33
+ Classifier: Programming Language :: Python :: 3.8
34
+ Classifier: Programming Language :: Python :: 3.9
35
+ Classifier: Programming Language :: Python :: 3.10
36
+ Classifier: Programming Language :: Python :: 3.11
37
+ Classifier: Programming Language :: Python :: 3.12
38
+ Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
39
+ Classifier: Topic :: Scientific/Engineering :: Chemistry
40
+ Requires-Python: >=3.8
41
+ Description-Content-Type: text/markdown
42
+ License-File: LICENSE
43
+ Requires-Dist: customtkinter>=5.0.0
44
+ Requires-Dist: numpy>=1.21.0
45
+ Requires-Dist: matplotlib>=3.5.0
46
+ Requires-Dist: requests>=2.25.0
47
+ Requires-Dist: MDAnalysis>=2.0.0
48
+ Requires-Dist: propka>=3.2.0
49
+ Provides-Extra: analysis
50
+ Requires-Dist: MDAnalysis>=2.0.0; extra == "analysis"
51
+ Provides-Extra: all
52
+ Requires-Dist: MDAnalysis>=2.0.0; extra == "all"
53
+ Dynamic: license-file
54
+
55
+ # Gatewizard
56
+
57
+ A library and GUI application tool for membrane protein preparation and molecular dynamics analysis.
58
+
59
+ ## Features
60
+
61
+ - **Protein Structure Preparation**: Clean PDB files, add missing atoms, and optimize structures
62
+ - **Propka Integration**: pKa calculations with automatic protonation state assignment
63
+ - **Protein Capping**: Add ACE/NME caps to protein termini before analysis
64
+ - **Force Field Support**: Compatible with Amber force fields (ff14SB, ff19SB, etc.)
65
+ - **Membrane System Building**: Automated membrane protein insertion and equilibration
66
+ - **Modern GUI**: Built with CustomTkinter for an intuitive user experience
67
+
68
+ ## Installation
69
+
70
+ ### Quick Installation (Recommended)
71
+
72
+ 1. **Create a conda environment with all dependencies:**
73
+ ```bash
74
+ conda create -n gatewizard -c conda-forge python sqlite ambertools=24 parmed=4.3.0 -y
75
+ ```
76
+
77
+ 2. **Activate the environment:**
78
+ ```bash
79
+ conda activate gatewizard
80
+ ```
81
+
82
+ 3. **Install Gatewizard:**
83
+ ```bash
84
+ pip install -e .
85
+ ```
86
+
87
+ ### Alternative: Using environment.yml
88
+
89
+ 1. **Create environment from file:**
90
+ ```bash
91
+ conda env create -f environment.yml
92
+ ```
93
+
94
+ 2. **Activate the environment:**
95
+ ```bash
96
+ conda activate gatewizard
97
+ ```
98
+
99
+ 3. **Install Gatewizard:**
100
+ ```bash
101
+ pip install -e .
102
+ ```
103
+
104
+ ## Dependencies
105
+
106
+ ### Core Dependencies (Automatically Installed)
107
+ - **Python** ≥ 3.8
108
+ - **CustomTkinter** ≥ 5.0.0 - Modern GUI framework
109
+ - **NumPy** ≥ 1.21.0 - Numerical computing
110
+ - **Matplotlib** ≥ 3.5.0 - Plotting and visualization
111
+ - **MDAnalysis** ≥ 2.0.0 - Molecular analysis toolkit
112
+ - **Propka** ≥ 3.2.0 - pKa calculations
113
+ - **BioPython** - PDB file handling
114
+
115
+ ### Scientific Computing Dependencies (Via Conda)
116
+ - **AmberTools 24** - Molecular dynamics preparation and analysis
117
+ - **Parmed 4.3.0** - Parameter/topology file manipulation (must be from conda-forge for compatibility)
118
+
119
+ ## Usage
120
+
121
+ ### Launch the GUI
122
+ ```bash
123
+ gatewizard
124
+ ```
125
+
126
+ ### Command Line Options
127
+ ```bash
128
+ gatewizard --help # Show all options
129
+ gatewizard --screen 1 # Launch on secondary monitor
130
+ gatewizard --debug # Enable debug logging
131
+ gatewizard --version # Show version
132
+ ```
133
+
134
+ ## Key Features
135
+
136
+ ### Propka Analysis
137
+ - Automatic pKa calculations for protein residues
138
+ - Protonation state assignment at specified pH
139
+ - Optional protein capping with ACE/NME groups
140
+ - Export results for molecular dynamics simulations
141
+
142
+ ### System Building
143
+ - Automated protein preparation workflow
144
+ - Integration with AmberTools for force field assignment
145
+ - Support for different membrane types
146
+ - Equilibration protocol generation
147
+ - Analysis of the equilibrated and production MDs
148
+
149
+ ## Troubleshooting
150
+
151
+ ### Common Issues
152
+
153
+ **ImportError with numpy.compat:**
154
+ This indicates a version conflict between NumPy and Parmed. Make sure to install Parmed via conda-forge as shown in the installation instructions.
155
+
156
+ **pdb4amber command not found:**
157
+ Ensure AmberTools is installed via conda-forge and the gatewizard environment is activated.
158
+
159
+ **GUI not launching:**
160
+ Check that CustomTkinter is properly installed. Try reinstalling with `pip install --force-reinstall customtkinter`.
161
+
162
+ ## Development
163
+
164
+ ### Setting up for Development
165
+ ```bash
166
+ git clone <repository>
167
+ cd gatewizard
168
+ conda env create -f environment.yml
169
+ conda activate gatewizard
170
+ pip install -e .
171
+ ```
172
+
173
+ ### Project Structure
174
+
175
+ ```
176
+ gatewizard/
177
+ ├── gatewizard/ # Main source code
178
+ │ ├── gui/ # GUI components
179
+ │ ├── analysis/ # Analysis modules
180
+ │ └── ...
181
+ ├── docs/ # Documentation (GitHub Pages)
182
+ ├── tests/ # Test suite
183
+ ├── environment.yml # Conda environment
184
+ ├── pyproject.toml # Project configuration
185
+ └── README.md # This file
186
+ ```
187
+
188
+ ### Running Tests
189
+
190
+ All tests are in the `tests/` directory. See [tests/README.md](tests/README.md) for detailed testing documentation.
191
+
192
+ ```bash
193
+ # Run all tests
194
+ python -m pytest tests/
195
+
196
+ # Run with verbose output
197
+ python -m pytest tests/ -v
198
+
199
+ # Run specific test file
200
+ python -m pytest tests/test_propka_improvements.py
201
+
202
+ # Run with coverage
203
+ python -m pytest tests/ --cov=gatewizard --cov-report=html
204
+ ```
205
+
206
+ ### Documentation
207
+
208
+ Documentation is built with MkDocs and hosted on GitHub Pages.
209
+
210
+ ```bash
211
+ # Install MkDocs
212
+ pip install mkdocs mkdocs-material
213
+
214
+ # Serve documentation locally
215
+ mkdocs serve
216
+
217
+ # Build documentation
218
+ mkdocs build
219
+
220
+ # Deploy to GitHub Pages
221
+ mkdocs gh-deploy
222
+ ```
223
+
224
+ View documentation at: `http://localhost:8000` (when serving locally)
225
+
226
+ ## Contributing
227
+
228
+ Contributions are welcome! Please:
229
+
230
+ 1. Fork the repository
231
+ 2. Create a feature branch (`git checkout -b feature/amazing-feature`)
232
+ 3. Make your changes
233
+ 4. Add/update tests
234
+ 5. Update documentation
235
+ 6. Commit your changes (`git commit -m 'Add amazing feature'`)
236
+ 7. Push to the branch (`git push origin feature/amazing-feature`)
237
+ 8. Open a Pull Request
238
+
239
+ ### Code Style
240
+
241
+ - Follow PEP 8 guidelines
242
+ - Add docstrings to functions and classes
243
+ - Include type hints where appropriate
244
+ - Write tests for new features
245
+
246
+ ## License
247
+
248
+ GateWizard is licensed under the [MIT License](LICENSE).
249
+
250
+ Copyright (c) 2025 Constanza González and Mauricio Bedoya
251
+
252
+ ## Authors
253
+
254
+ - Constanza González <constanza.gonzalez.villagra@gmail.com>
255
+ - Mauricio Bedoya <mbedoya@ucm.cl>
256
+
@@ -0,0 +1,202 @@
1
+ # Gatewizard
2
+
3
+ A library and GUI application tool for membrane protein preparation and molecular dynamics analysis.
4
+
5
+ ## Features
6
+
7
+ - **Protein Structure Preparation**: Clean PDB files, add missing atoms, and optimize structures
8
+ - **Propka Integration**: pKa calculations with automatic protonation state assignment
9
+ - **Protein Capping**: Add ACE/NME caps to protein termini before analysis
10
+ - **Force Field Support**: Compatible with Amber force fields (ff14SB, ff19SB, etc.)
11
+ - **Membrane System Building**: Automated membrane protein insertion and equilibration
12
+ - **Modern GUI**: Built with CustomTkinter for an intuitive user experience
13
+
14
+ ## Installation
15
+
16
+ ### Quick Installation (Recommended)
17
+
18
+ 1. **Create a conda environment with all dependencies:**
19
+ ```bash
20
+ conda create -n gatewizard -c conda-forge python sqlite ambertools=24 parmed=4.3.0 -y
21
+ ```
22
+
23
+ 2. **Activate the environment:**
24
+ ```bash
25
+ conda activate gatewizard
26
+ ```
27
+
28
+ 3. **Install Gatewizard:**
29
+ ```bash
30
+ pip install -e .
31
+ ```
32
+
33
+ ### Alternative: Using environment.yml
34
+
35
+ 1. **Create environment from file:**
36
+ ```bash
37
+ conda env create -f environment.yml
38
+ ```
39
+
40
+ 2. **Activate the environment:**
41
+ ```bash
42
+ conda activate gatewizard
43
+ ```
44
+
45
+ 3. **Install Gatewizard:**
46
+ ```bash
47
+ pip install -e .
48
+ ```
49
+
50
+ ## Dependencies
51
+
52
+ ### Core Dependencies (Automatically Installed)
53
+ - **Python** ≥ 3.8
54
+ - **CustomTkinter** ≥ 5.0.0 - Modern GUI framework
55
+ - **NumPy** ≥ 1.21.0 - Numerical computing
56
+ - **Matplotlib** ≥ 3.5.0 - Plotting and visualization
57
+ - **MDAnalysis** ≥ 2.0.0 - Molecular analysis toolkit
58
+ - **Propka** ≥ 3.2.0 - pKa calculations
59
+ - **BioPython** - PDB file handling
60
+
61
+ ### Scientific Computing Dependencies (Via Conda)
62
+ - **AmberTools 24** - Molecular dynamics preparation and analysis
63
+ - **Parmed 4.3.0** - Parameter/topology file manipulation (must be from conda-forge for compatibility)
64
+
65
+ ## Usage
66
+
67
+ ### Launch the GUI
68
+ ```bash
69
+ gatewizard
70
+ ```
71
+
72
+ ### Command Line Options
73
+ ```bash
74
+ gatewizard --help # Show all options
75
+ gatewizard --screen 1 # Launch on secondary monitor
76
+ gatewizard --debug # Enable debug logging
77
+ gatewizard --version # Show version
78
+ ```
79
+
80
+ ## Key Features
81
+
82
+ ### Propka Analysis
83
+ - Automatic pKa calculations for protein residues
84
+ - Protonation state assignment at specified pH
85
+ - Optional protein capping with ACE/NME groups
86
+ - Export results for molecular dynamics simulations
87
+
88
+ ### System Building
89
+ - Automated protein preparation workflow
90
+ - Integration with AmberTools for force field assignment
91
+ - Support for different membrane types
92
+ - Equilibration protocol generation
93
+ - Analysis of the equilibrated and production MDs
94
+
95
+ ## Troubleshooting
96
+
97
+ ### Common Issues
98
+
99
+ **ImportError with numpy.compat:**
100
+ This indicates a version conflict between NumPy and Parmed. Make sure to install Parmed via conda-forge as shown in the installation instructions.
101
+
102
+ **pdb4amber command not found:**
103
+ Ensure AmberTools is installed via conda-forge and the gatewizard environment is activated.
104
+
105
+ **GUI not launching:**
106
+ Check that CustomTkinter is properly installed. Try reinstalling with `pip install --force-reinstall customtkinter`.
107
+
108
+ ## Development
109
+
110
+ ### Setting up for Development
111
+ ```bash
112
+ git clone <repository>
113
+ cd gatewizard
114
+ conda env create -f environment.yml
115
+ conda activate gatewizard
116
+ pip install -e .
117
+ ```
118
+
119
+ ### Project Structure
120
+
121
+ ```
122
+ gatewizard/
123
+ ├── gatewizard/ # Main source code
124
+ │ ├── gui/ # GUI components
125
+ │ ├── analysis/ # Analysis modules
126
+ │ └── ...
127
+ ├── docs/ # Documentation (GitHub Pages)
128
+ ├── tests/ # Test suite
129
+ ├── environment.yml # Conda environment
130
+ ├── pyproject.toml # Project configuration
131
+ └── README.md # This file
132
+ ```
133
+
134
+ ### Running Tests
135
+
136
+ All tests are in the `tests/` directory. See [tests/README.md](tests/README.md) for detailed testing documentation.
137
+
138
+ ```bash
139
+ # Run all tests
140
+ python -m pytest tests/
141
+
142
+ # Run with verbose output
143
+ python -m pytest tests/ -v
144
+
145
+ # Run specific test file
146
+ python -m pytest tests/test_propka_improvements.py
147
+
148
+ # Run with coverage
149
+ python -m pytest tests/ --cov=gatewizard --cov-report=html
150
+ ```
151
+
152
+ ### Documentation
153
+
154
+ Documentation is built with MkDocs and hosted on GitHub Pages.
155
+
156
+ ```bash
157
+ # Install MkDocs
158
+ pip install mkdocs mkdocs-material
159
+
160
+ # Serve documentation locally
161
+ mkdocs serve
162
+
163
+ # Build documentation
164
+ mkdocs build
165
+
166
+ # Deploy to GitHub Pages
167
+ mkdocs gh-deploy
168
+ ```
169
+
170
+ View documentation at: `http://localhost:8000` (when serving locally)
171
+
172
+ ## Contributing
173
+
174
+ Contributions are welcome! Please:
175
+
176
+ 1. Fork the repository
177
+ 2. Create a feature branch (`git checkout -b feature/amazing-feature`)
178
+ 3. Make your changes
179
+ 4. Add/update tests
180
+ 5. Update documentation
181
+ 6. Commit your changes (`git commit -m 'Add amazing feature'`)
182
+ 7. Push to the branch (`git push origin feature/amazing-feature`)
183
+ 8. Open a Pull Request
184
+
185
+ ### Code Style
186
+
187
+ - Follow PEP 8 guidelines
188
+ - Add docstrings to functions and classes
189
+ - Include type hints where appropriate
190
+ - Write tests for new features
191
+
192
+ ## License
193
+
194
+ GateWizard is licensed under the [MIT License](LICENSE).
195
+
196
+ Copyright (c) 2025 Constanza González and Mauricio Bedoya
197
+
198
+ ## Authors
199
+
200
+ - Constanza González <constanza.gonzalez.villagra@gmail.com>
201
+ - Mauricio Bedoya <mbedoya@ucm.cl>
202
+
@@ -0,0 +1,48 @@
1
+ # SPDX-License-Identifier: MIT
2
+ # Copyright (c) 2025 Constanza González and Mauricio Bedoya
3
+
4
+ """
5
+ Gatewizard - A tool for membrane protein preparation and analysis.
6
+ """
7
+
8
+ __version__ = "1.0.0"
9
+ __author__ = "Constanza González, Mauricio Bedoya"
10
+ __email__ = ""
11
+ __license__ = "MIT"
12
+
13
+ # Import main classes for easier access
14
+ from gatewizard.core.preparation import (
15
+ run_propka,
16
+ extract_summary_section,
17
+ parse_summary_section,
18
+ modify_pdb_based_on_summary,
19
+ )
20
+
21
+ from gatewizard.core.builder import Builder
22
+ from gatewizard.core.job_monitor import JobMonitor
23
+
24
+ # GUI imports (optional, only if GUI dependencies are available)
25
+ try:
26
+ from gatewizard.gui.app import ProteinViewerApp
27
+ GUI_AVAILABLE = True
28
+ except ImportError:
29
+ GUI_AVAILABLE = False
30
+ ProteinViewerApp = None
31
+
32
+ __all__ = [
33
+ "__version__",
34
+ "__author__",
35
+ "__email__",
36
+ "__license__",
37
+ "run_propka",
38
+ "extract_summary_section",
39
+ "parse_summary_section",
40
+ "modify_pdb_based_on_summary",
41
+ "Builder",
42
+ "JobMonitor",
43
+ "GUI_AVAILABLE",
44
+ ]
45
+
46
+ # Add ProteinViewerApp to __all__ if GUI is available
47
+ if GUI_AVAILABLE:
48
+ __all__.append("ProteinViewerApp")
@@ -0,0 +1,29 @@
1
+ """
2
+ Core functionality module for Gatewizard.
3
+
4
+ This module contains the core business logic for protein preparation,
5
+ system building, and job monitoring. It is independent of the GUI
6
+ and can be used programmatically.
7
+ """
8
+
9
+ from gatewizard.core.preparation import (
10
+ run_propka,
11
+ extract_summary_section,
12
+ parse_summary_section,
13
+ modify_pdb_based_on_summary,
14
+ )
15
+
16
+ from gatewizard.core.builder import Builder
17
+ from gatewizard.core.job_monitor import JobMonitor, JobStatus
18
+ from gatewizard.core.file_manager import FileManager
19
+
20
+ __all__ = [
21
+ "run_propka",
22
+ "extract_summary_section",
23
+ "parse_summary_section",
24
+ "modify_pdb_based_on_summary",
25
+ "Builder",
26
+ "JobMonitor",
27
+ "JobStatus",
28
+ "FileManager",
29
+ ]