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.
- gatewizard-1.0.0/LICENSE +21 -0
- gatewizard-1.0.0/MANIFEST.in +18 -0
- gatewizard-1.0.0/PKG-INFO +256 -0
- gatewizard-1.0.0/README.md +202 -0
- gatewizard-1.0.0/gatewizard/__init__.py +48 -0
- gatewizard-1.0.0/gatewizard/core/__init__.py +29 -0
- gatewizard-1.0.0/gatewizard/core/builder.py +1369 -0
- gatewizard-1.0.0/gatewizard/core/file_manager.py +396 -0
- gatewizard-1.0.0/gatewizard/core/job_monitor.py +546 -0
- gatewizard-1.0.0/gatewizard/core/preparation.py +998 -0
- gatewizard-1.0.0/gatewizard/gui/__init__.py +18 -0
- gatewizard-1.0.0/gatewizard/gui/app.py +2006 -0
- gatewizard-1.0.0/gatewizard/gui/base/__init__.py +5 -0
- gatewizard-1.0.0/gatewizard/gui/base/callback_manager.py +94 -0
- gatewizard-1.0.0/gatewizard/gui/constants.py +285 -0
- gatewizard-1.0.0/gatewizard/gui/frames/__init__.py +19 -0
- gatewizard-1.0.0/gatewizard/gui/frames/analysis.py +7332 -0
- gatewizard-1.0.0/gatewizard/gui/frames/builder_frame.py +1258 -0
- gatewizard-1.0.0/gatewizard/gui/frames/equilibration.py +3636 -0
- gatewizard-1.0.0/gatewizard/gui/frames/preparation_frame.py +2110 -0
- gatewizard-1.0.0/gatewizard/gui/frames/visualize.py +1198 -0
- gatewizard-1.0.0/gatewizard/gui/widgets/__init__.py +17 -0
- gatewizard-1.0.0/gatewizard/gui/widgets/leaflet_frame.py +350 -0
- gatewizard-1.0.0/gatewizard/gui/widgets/progress_tracker.py +1092 -0
- gatewizard-1.0.0/gatewizard/gui/widgets/propka_workflow_helper.py +1129 -0
- gatewizard-1.0.0/gatewizard/gui/widgets/searchable_combobox.py +367 -0
- gatewizard-1.0.0/gatewizard/gui/widgets/stage_tabs.py +352 -0
- gatewizard-1.0.0/gatewizard/main.py +155 -0
- gatewizard-1.0.0/gatewizard/tools/__init__.py +16 -0
- gatewizard-1.0.0/gatewizard/tools/equilibration.py +2515 -0
- gatewizard-1.0.0/gatewizard/tools/force_fields.py +408 -0
- gatewizard-1.0.0/gatewizard/tools/molecular_viewer.py +198 -0
- gatewizard-1.0.0/gatewizard/tools/validators.py +657 -0
- gatewizard-1.0.0/gatewizard/utils/__init__.py +47 -0
- gatewizard-1.0.0/gatewizard/utils/bilayer_utils.py +314 -0
- gatewizard-1.0.0/gatewizard/utils/config.py +407 -0
- gatewizard-1.0.0/gatewizard/utils/helpers.py +483 -0
- gatewizard-1.0.0/gatewizard/utils/logger.py +297 -0
- gatewizard-1.0.0/gatewizard/utils/namd_analysis.py +2463 -0
- gatewizard-1.0.0/gatewizard/utils/optional_deps.py +112 -0
- gatewizard-1.0.0/gatewizard/utils/protein_capping.py +583 -0
- gatewizard-1.0.0/gatewizard.egg-info/PKG-INFO +256 -0
- gatewizard-1.0.0/gatewizard.egg-info/SOURCES.txt +110 -0
- gatewizard-1.0.0/gatewizard.egg-info/dependency_links.txt +1 -0
- gatewizard-1.0.0/gatewizard.egg-info/entry_points.txt +2 -0
- gatewizard-1.0.0/gatewizard.egg-info/requires.txt +12 -0
- gatewizard-1.0.0/gatewizard.egg-info/top_level.txt +6 -0
- gatewizard-1.0.0/pyproject.toml +73 -0
- gatewizard-1.0.0/setup.cfg +4 -0
- gatewizard-1.0.0/tests/__init__.py +10 -0
- gatewizard-1.0.0/tests/analysis_examples/analysis_example_01.py +33 -0
- gatewizard-1.0.0/tests/analysis_examples/analysis_example_02.py +14 -0
- gatewizard-1.0.0/tests/analysis_examples/analysis_example_03.py +45 -0
- gatewizard-1.0.0/tests/analysis_examples/analysis_example_04.py +31 -0
- gatewizard-1.0.0/tests/analysis_examples/analysis_example_05.py +47 -0
- gatewizard-1.0.0/tests/analysis_examples/analysis_example_06.py +33 -0
- gatewizard-1.0.0/tests/analysis_examples/analysis_example_07.py +55 -0
- gatewizard-1.0.0/tests/analysis_examples/analysis_example_08.py +50 -0
- gatewizard-1.0.0/tests/analysis_examples/analysis_example_09.py +45 -0
- gatewizard-1.0.0/tests/analysis_examples/analysis_example_10.py +140 -0
- gatewizard-1.0.0/tests/builder_examples/builder_example_01.py +6 -0
- gatewizard-1.0.0/tests/builder_examples/builder_example_02.py +15 -0
- gatewizard-1.0.0/tests/builder_examples/builder_example_03.py +12 -0
- gatewizard-1.0.0/tests/builder_examples/builder_example_04.py +12 -0
- gatewizard-1.0.0/tests/builder_examples/builder_example_05.py +12 -0
- gatewizard-1.0.0/tests/builder_examples/builder_example_06.py +21 -0
- gatewizard-1.0.0/tests/builder_examples/builder_example_07.py +9 -0
- gatewizard-1.0.0/tests/builder_examples/builder_example_08.py +34 -0
- gatewizard-1.0.0/tests/builder_examples/builder_example_09.py +36 -0
- gatewizard-1.0.0/tests/builder_examples/builder_example_10.py +39 -0
- gatewizard-1.0.0/tests/builder_examples/builder_example_11.py +27 -0
- gatewizard-1.0.0/tests/builder_examples/builder_example_12.py +24 -0
- gatewizard-1.0.0/tests/builder_examples/builder_example_13.py +25 -0
- gatewizard-1.0.0/tests/builder_examples/builder_example_14.py +24 -0
- gatewizard-1.0.0/tests/builder_examples/builder_example_15.py +4 -0
- gatewizard-1.0.0/tests/builder_examples/builder_example_16.py +43 -0
- gatewizard-1.0.0/tests/builder_examples/builder_example_17.py +34 -0
- gatewizard-1.0.0/tests/equilibration_examples/equilibration_example_01.py +40 -0
- gatewizard-1.0.0/tests/equilibration_examples/equilibration_example_02.py +47 -0
- gatewizard-1.0.0/tests/equilibration_examples/equilibration_example_03.py +18 -0
- gatewizard-1.0.0/tests/equilibration_examples/equilibration_example_04.py +75 -0
- gatewizard-1.0.0/tests/equilibration_examples/equilibration_example_05.py +105 -0
- gatewizard-1.0.0/tests/equilibration_examples/equilibration_example_06.py +151 -0
- gatewizard-1.0.0/tests/equilibration_examples/equilibration_example_07.py +86 -0
- gatewizard-1.0.0/tests/equilibration_examples/popc_membrane/status_utils.py +95 -0
- gatewizard-1.0.0/tests/preparation_examples/preparation_example_01.py +4 -0
- gatewizard-1.0.0/tests/preparation_examples/preparation_example_02.py +4 -0
- gatewizard-1.0.0/tests/preparation_examples/preparation_example_03.py +10 -0
- gatewizard-1.0.0/tests/preparation_examples/preparation_example_04.py +34 -0
- gatewizard-1.0.0/tests/preparation_examples/preparation_example_05.py +30 -0
- gatewizard-1.0.0/tests/preparation_examples/preparation_example_06.py +11 -0
- gatewizard-1.0.0/tests/preparation_examples/preparation_example_07.py +5 -0
- gatewizard-1.0.0/tests/preparation_examples/preparation_example_08.py +17 -0
- gatewizard-1.0.0/tests/preparation_examples/preparation_example_09.py +18 -0
- gatewizard-1.0.0/tests/preparation_examples/preparation_example_10.py +19 -0
- gatewizard-1.0.0/tests/preparation_examples/preparation_example_11.py +10 -0
- gatewizard-1.0.0/tests/preparation_examples/preparation_example_12.py +13 -0
- gatewizard-1.0.0/tests/preparation_examples/preparation_example_13.py +51 -0
- gatewizard-1.0.0/tests/preparation_examples/preparation_example_14.py +146 -0
- gatewizard-1.0.0/tests/preparation_examples/preparation_example_15.py +23 -0
- gatewizard-1.0.0/tests/preparation_examples/preparation_example_16.py +6 -0
- gatewizard-1.0.0/tests/preparation_examples/preparation_example_17.py +32 -0
- gatewizard-1.0.0/tests/preparation_examples/preparation_example_18.py +48 -0
- gatewizard-1.0.0/tests/preparation_examples/preparation_example_19.py +30 -0
- gatewizard-1.0.0/tests/preparation_examples/preparation_example_20.py +66 -0
- gatewizard-1.0.0/tests/preparation_examples/preparation_example_21.py +30 -0
- gatewizard-1.0.0/tests/preparation_examples/preparation_example_22.py +54 -0
- gatewizard-1.0.0/tests/test_analysis.py +389 -0
- gatewizard-1.0.0/tests/test_builder.py +570 -0
- gatewizard-1.0.0/tests/test_equilibration.py +721 -0
- gatewizard-1.0.0/tests/test_new_api.py +448 -0
- gatewizard-1.0.0/tests/test_preparation.py +997 -0
gatewizard-1.0.0/LICENSE
ADDED
|
@@ -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
|
+
]
|