pytheas1 1.1.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 (55) hide show
  1. pytheas1-1.1.0/LICENSE +21 -0
  2. pytheas1-1.1.0/PKG-INFO +305 -0
  3. pytheas1-1.1.0/README.md +281 -0
  4. pytheas1-1.1.0/pyproject.toml +47 -0
  5. pytheas1-1.1.0/setup.cfg +4 -0
  6. pytheas1-1.1.0/src/pytheas1/__init__.py +10 -0
  7. pytheas1-1.1.0/src/pytheas1/__main__.py +5 -0
  8. pytheas1-1.1.0/src/pytheas1/_compat.py +48 -0
  9. pytheas1-1.1.0/src/pytheas1/cli.py +153 -0
  10. pytheas1-1.1.0/src/pytheas1/data/Charge_tables/QTOF/charges_MS1.txt +21 -0
  11. pytheas1-1.1.0/src/pytheas1/data/Charge_tables/QTOF/charges_MS2.txt +21 -0
  12. pytheas1-1.1.0/src/pytheas1/data/Charge_tables/QTOF_and_other_spectrometers/charges_MS1.txt +21 -0
  13. pytheas1-1.1.0/src/pytheas1/data/Charge_tables/QTOF_and_other_spectrometers/charges_MS2.txt +21 -0
  14. pytheas1-1.1.0/src/pytheas1/data/Charge_tables/QTOF_training_set_only/charges_MS1_calibration.txt +21 -0
  15. pytheas1-1.1.0/src/pytheas1/data/Charge_tables/QTOF_training_set_only/charges_MS2_calibration.txt +21 -0
  16. pytheas1-1.1.0/src/pytheas1/data/RNAmodifications_template.txt +18 -0
  17. pytheas1-1.1.0/src/pytheas1/data/charges_MS1.txt +21 -0
  18. pytheas1-1.1.0/src/pytheas1/data/charges_MS2.txt +21 -0
  19. pytheas1-1.1.0/src/pytheas1/data/js/color_tables.js +93 -0
  20. pytheas1-1.1.0/src/pytheas1/data/js/mapping_output.js +109 -0
  21. pytheas1-1.1.0/src/pytheas1/data/js/sorttable.js +495 -0
  22. pytheas1-1.1.0/src/pytheas1/data/js/visualize_spectra.js +16 -0
  23. pytheas1-1.1.0/src/pytheas1/data/nts_heavy.xlsx +0 -0
  24. pytheas1-1.1.0/src/pytheas1/data/nts_light.xlsx +0 -0
  25. pytheas1-1.1.0/src/pytheas1/final_report/__init__.py +0 -0
  26. pytheas1-1.1.0/src/pytheas1/final_report/final_report_library.py +247 -0
  27. pytheas1-1.1.0/src/pytheas1/gui.py +566 -0
  28. pytheas1-1.1.0/src/pytheas1/gui_spec.py +402 -0
  29. pytheas1-1.1.0/src/pytheas1/in_silico_digestion/__init__.py +0 -0
  30. pytheas1-1.1.0/src/pytheas1/in_silico_digestion/calc_mass_gui.py +1054 -0
  31. pytheas1-1.1.0/src/pytheas1/in_silico_digestion/consolidate_gui.py +191 -0
  32. pytheas1-1.1.0/src/pytheas1/in_silico_digestion/consolidate_tools.py +404 -0
  33. pytheas1-1.1.0/src/pytheas1/in_silico_digestion/decoy_gui.py +143 -0
  34. pytheas1-1.1.0/src/pytheas1/in_silico_digestion/enzyme_gui.py +371 -0
  35. pytheas1-1.1.0/src/pytheas1/in_silico_digestion/modify_gui.py +365 -0
  36. pytheas1-1.1.0/src/pytheas1/matching_scoring/__init__.py +0 -0
  37. pytheas1-1.1.0/src/pytheas1/matching_scoring/match_library.py +1088 -0
  38. pytheas1-1.1.0/src/pytheas1/matching_scoring/stats_tools.py +1150 -0
  39. pytheas1-1.1.0/src/pytheas1/params.py +59 -0
  40. pytheas1-1.1.0/src/pytheas1/sequence_mapping/__init__.py +0 -0
  41. pytheas1-1.1.0/src/pytheas1/sequence_mapping/mapping_library.py +462 -0
  42. pytheas1-1.1.0/src/pytheas1/stages.py +396 -0
  43. pytheas1-1.1.0/src/pytheas1/statistical_analysis/__init__.py +0 -0
  44. pytheas1-1.1.0/src/pytheas1/statistical_analysis/statistics_library.py +188 -0
  45. pytheas1-1.1.0/src/pytheas1/visualization_spectra/__init__.py +0 -0
  46. pytheas1-1.1.0/src/pytheas1/visualization_spectra/visualization_library.py +881 -0
  47. pytheas1-1.1.0/src/pytheas1.egg-info/PKG-INFO +305 -0
  48. pytheas1-1.1.0/src/pytheas1.egg-info/SOURCES.txt +53 -0
  49. pytheas1-1.1.0/src/pytheas1.egg-info/dependency_links.txt +1 -0
  50. pytheas1-1.1.0/src/pytheas1.egg-info/entry_points.txt +2 -0
  51. pytheas1-1.1.0/src/pytheas1.egg-info/requires.txt +10 -0
  52. pytheas1-1.1.0/src/pytheas1.egg-info/top_level.txt +1 -0
  53. pytheas1-1.1.0/tests/test_golden.py +40 -0
  54. pytheas1-1.1.0/tests/test_gui.py +187 -0
  55. pytheas1-1.1.0/tests/test_package.py +115 -0
pytheas1-1.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2021 Luigi D'Ascenzo
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,305 @@
1
+ Metadata-Version: 2.4
2
+ Name: pytheas1
3
+ Version: 1.1.0
4
+ Summary: Pytheas 1: automated analysis of RNA tandem mass spectrometry data (refreshed packaging of the published code)
5
+ Author: Luigi D'Ascenzo
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/jwilliamson16/Pytheas1
8
+ Project-URL: Issues, https://github.com/jwilliamson16/Pytheas1/issues
9
+ Project-URL: Original repository, https://github.com/ldascenzo/pytheas
10
+ Project-URL: Paper, https://doi.org/10.1038/s41467-022-30057-5
11
+ Requires-Python: >=3.10
12
+ Description-Content-Type: text/markdown
13
+ License-File: LICENSE
14
+ Requires-Dist: numpy>=1.25
15
+ Requires-Dist: pandas>=2.0
16
+ Requires-Dist: matplotlib>=3.7
17
+ Requires-Dist: biopython>=1.80
18
+ Requires-Dist: pyteomics>=4.5
19
+ Requires-Dist: openpyxl>=3.0
20
+ Requires-Dist: PyQt5>=5.15
21
+ Provides-Extra: test
22
+ Requires-Dist: pytest>=7; extra == "test"
23
+ Dynamic: license-file
24
+
25
+ # Pytheas 1, refreshed
26
+
27
+ **Pytheas finds RNA sequences and modifications in tandem mass spectra by database search**
28
+ (D'Ascenzo et al., *Nature Communications* 13, 2424 (2022)). It runs in six stages:
29
+ 1. in silico digestion with known modifications;
30
+ 2. MS2 matching with the Sp score;
31
+ 3. target-decoy FDR;
32
+ 4. a final report;
33
+ 5. sequence maps;
34
+ 6. annotated spectra.
35
+
36
+ **This repository packages the published code from https://github.com/ldascenzo/pytheas** so
37
+ that it installs with pip and runs on current Python, with a new desktop GUI.
38
+
39
+ **The analysis is unchanged.**
40
+ - The algorithms are the published ones. The analysis code was changed only where current
41
+ libraries no longer run it.
42
+ - Each stage was checked against the original code running on its original software stack.
43
+ - The one difference from the paper is the author's own 2022 fix to Sp scoring, which is
44
+ already in the upstream code.
45
+
46
+ See [VALIDATION.md](https://github.com/jwilliamson16/Pytheas1/blob/main/VALIDATION.md).
47
+
48
+ ## Install
49
+
50
+ You need Python 3.10 or newer. Install into a virtual environment; deleting its folder
51
+ uninstalls it.
52
+
53
+ ```
54
+ python3 -m venv ~/venvs/pytheas1
55
+ source ~/venvs/pytheas1/bin/activate # Windows: ~\venvs\pytheas1\Scripts\activate
56
+ pip install pytheas1
57
+ ```
58
+
59
+ **Other ways to get the package:**
60
+ - **The wheel (`.whl`)** is on the [Releases](https://github.com/jwilliamson16/Pytheas1/releases) page:
61
+ `pip install pytheas1-1.1.0-py3-none-any.whl`.
62
+ - **From a clone:** `git clone https://github.com/jwilliamson16/Pytheas1.git`, then `pip install .` inside it. The clone is about
63
+ 100 MB, mostly the paper's datasets in `paper_data/`.
64
+
65
+ **What gets installed:**
66
+ - all the dependencies: numpy, pandas, matplotlib, Biopython, pyteomics, openpyxl and PyQt5;
67
+ - the default nucleotide sheets and charge tables;
68
+ - a `pytheas1` command.
69
+
70
+ ## Try it on the paper's Training_set
71
+
72
+ The [Releases](https://github.com/jwilliamson16/Pytheas1/releases) page has `pytheas1_demo.zip`. It holds the Training_set
73
+ inputs (sequences, modifications, charge tables, spectra) and a parameter file with the
74
+ settings of the original README demo. Unzip it to get a `pytheas1_demo` folder.
75
+
76
+ **To make the same folder from a clone:**
77
+
78
+ ```
79
+ mkdir pytheas1_demo
80
+ cp paper_data/Training_set/{calibration_set_sequences.fasta,calibration_set.mgf,modfile_calibration_set.txt,charges_MS1_calibration.txt,charges_MS2_calibration.txt} pytheas1_demo/
81
+ cp examples/training_set/pytheas1_parameters.json pytheas1_demo/
82
+ ```
83
+
84
+ **To run it:**
85
+ - **In the GUI:** `pytheas1 --workdir pytheas1_demo` opens on the folder with the settings
86
+ loaded. Click **Run all**.
87
+ - **On the command line:** `pytheas1 --nogui --load_vars --workdir pytheas1_demo --all`.
88
+
89
+ **Results:** all six stages take a few minutes. The final report lists the 137
90
+ identifications of the paper's Training_set, with the Sp values described in
91
+ VALIDATION.md.
92
+
93
+ ## Use
94
+
95
+ ### GUI
96
+
97
+ Run `pytheas1`, or `pytheas1 --workdir FOLDER` to open it on a folder.
98
+ - **Tabs:** there is one tab per stage, with the options, order and help text of the original
99
+ Gooey forms. A blank input that comes from an earlier stage shows the file it will use.
100
+ - **Working folder:** choose one first. Settings saved there as `pytheas1_parameters.json`
101
+ load automatically.
102
+ - **Buttons:** **Run** on a tab runs that stage. **Run all** runs the six in order. **Stop**
103
+ ends the run.
104
+ - **GUI and command line give the same result.** A run saves the settings to
105
+ `pytheas1_parameters.json` and runs `pytheas1 --nogui --load_vars --workdir FOLDER
106
+ --<stage>`, so it also produces the same run record. Its output streams into the log, and
107
+ each tab shows ✓ or ✗ when its stage finishes.
108
+
109
+ ### Command line
110
+
111
+ ```
112
+ pytheas1 --write_params my_run.json # every setting, at its default
113
+ pytheas1 --nogui --load_vars --params my_run.json --all
114
+ pytheas1 --nogui --load_vars --params my_run.json --digest --match
115
+ ```
116
+
117
+ **The parameter file** has one section per stage: `digest`, `match`, `stats`, `report`,
118
+ `mapping` and `visualize`.
119
+ - Each section lists only the settings that differ from the defaults.
120
+ - Inputs that come from an earlier stage can be left out; they are picked up automatically.
121
+ Examples are the digest for Match, or the match output for the report.
122
+ - Input files can be given by name, relative to the working folder.
123
+
124
+ **Run records.** Each run writes two files to `pytheas1_runs/` in the working folder:
125
+ - `<time>.json`, recording the settings used, the files written and the library versions;
126
+ - `<time>.log`, the run's complete console output.
127
+
128
+ `log.txt` is the original Match stage's own three-line summary.
129
+
130
+ ### What each option means
131
+
132
+ The original program's manual is reproduced below under "Original README". It explains what
133
+ each stage does and every option. Its installation and launch instructions are for the
134
+ original Gooey version; for this package, use the ones above.
135
+
136
+ ## Status
137
+
138
+ - **macOS:** tested with Python 3.12.
139
+ - **Windows and Linux:** not yet tested. Please report problems.
140
+ - **Tests:** `pytest` runs every stage against the original code's outputs in about five
141
+ minutes. `pytest -m "not slow"` takes seconds and skips Match and visualization.
142
+
143
+ ## Questions and bug reports
144
+
145
+ Open an [issue](https://github.com/jwilliamson16/Pytheas1/issues). For a bug, attach the run's `.log` and `.json` from
146
+ `pytheas1_runs/`.
147
+
148
+ Known bugs of the original program, kept for fidelity, are listed in
149
+ [KNOWN_ISSUES.md](https://github.com/jwilliamson16/Pytheas1/blob/main/KNOWN_ISSUES.md). [PORTING.md](https://github.com/jwilliamson16/Pytheas1/blob/main/PORTING.md) lists every change made to the
150
+ analysis code.
151
+
152
+ ## Credit and license
153
+
154
+ Pytheas was written by Luigi D'Ascenzo (The Scripps Research Institute) and is distributed
155
+ under the MIT License (`LICENSE`). The 2026 packaging and GUI are from the Williamson lab,
156
+ Scripps Research.
157
+
158
+ Please cite:
159
+
160
+ > D'Ascenzo L., Popova A.M., Abernathy S., Sheng K., Limbach P.A., Williamson J.R. *Pytheas:
161
+ > a software package for the automated analysis of RNA sequences and modifications via
162
+ > tandem mass spectrometry.* Nat Commun 13, 2424 (2022).
163
+ > https://doi.org/10.1038/s41467-022-30057-5
164
+
165
+ Pytheas2 is a separate, newer program from the same group. It is available as a web service
166
+ through Cassia LLC: https://cassiallc.com
167
+
168
+ ---
169
+
170
+ # Original README
171
+
172
+ # Pytheas installation and basic usage notes
173
+
174
+ ## General notes
175
+ Pytheas has been fully tested on Windows 10, Linux (Ubuntu 20.04+) and macOS (10.14+, note that you need to use `pythonw` when launching the scripts on macOS). In the current release, there are two supported versions, one with a graphical interface (GUI) and one exclusively command line based (CL). The GUI version is the preferred one, but in case the user experiences issues while using it, the CL version is a good alternative albeit less user-friendly. For the purposes of inputs and outputs the scripts of the two versions are identical. Both versions require to call the component of the Pytheas workflow via command line, but the GUI version offers to the user a graphical interface to select the parameters and run the analysis. A third option is to run Pytheas through Docker, using the provided Dockerfile to build the image.
176
+ Several instances of files and libraries needed for the execution of other scripts (either already present or created while running Pytheas) are packaged together in the same directory, please be careful if moving the scripts from their original position as it may break some dependencies. It is therefore suggested to run the scripts in their provided directories and transfer around only the output files generated.
177
+
178
+ ## Pytheas Installation
179
+ ### Download GitHub repository
180
+ From the [GitHub repository](https://github.com/ldascenzo/pytheas) Pytheas can be downloaded either selecting the green “Code” button and choosing “Download ZIP” or cloning locally the git repository. The first option downloads a compressed directory with all the files, including the two GUI version and CL version main working directories. To clone the git repository, install git ([Windows instructions](https://git-scm.com/download/win)), then open a shell prompt (in Windows under *Start > Command Prompt*) and navigate into the desired directory for cloning Pytheas repository. Then, within this directory run `git clone https://github.com/ldascenzo/pytheas.git`
181
+ This will create a *pytheas* directory at the chosen location, with all the files needed to run Pytheas.
182
+
183
+ ### Windows 10/11
184
+ Download the latest [Anaconda version](https://docs.anaconda.com/anaconda/install/) based on the Windows version in usage (by April 2021 it is *Python 3.8 Windows 64-bit Graphical Installer*).
185
+ Install Anaconda leaving the standard options selected.
186
+
187
+ Open an Anaconda Powershell Prompt (*Start menu -> Anaconda Powershell Prompt*).
188
+ Within the prompt install some Python packages needed for Pytheas execution.
189
+ ```
190
+ conda create -n pytheas-env python=3.10 -y
191
+ conda activate pytheas-env
192
+ conda install -y numpy==1.23.1 pandas==1.4.1 matplotlib==3.5.0
193
+ conda install -y -c conda-forge gooey biopython
194
+ conda install -y -c bioconda pyteomics
195
+ conda install -y -c anaconda openpyxl
196
+ ```
197
+
198
+ ### Linux (Ubuntu 20.04)
199
+ Install the latest Python 3 version
200
+ ```
201
+ $ sudo apt-get update
202
+ $ sudo apt-get install python3
203
+ ```
204
+
205
+ Install pip, Python package manager to easily download, update and maintain all the libraries
206
+ ```
207
+ $ sudo apt install -y python3-pip
208
+ ```
209
+
210
+ Install some additional libraries that will be needed later, confirming with *Y* when needed during the installation.
211
+ ```
212
+ $ sudo apt-get install git curl libsdl2-mixer-2.0-0 libsdl2-image-2.0-0 libsdl2-2.0-0
213
+ ```
214
+
215
+ Install the wxPython package, which will be used for the GUI version.
216
+ ```
217
+ $ wget -P ~ "https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-20.04/wxPython-4.1.0-cp38-cp38-linux_x86_64.whl"
218
+ $ pip3 install ~/wxPython-4.1.0-cp38-cp38-linux_x86_64.whl
219
+ ```
220
+
221
+ Navigate to the local pytheas directory, then install all the requirements needed from the file *requirements.txt*. In case of problems with any of those, please refer to the respective documentations.
222
+ ```
223
+ $ pip3 install -r requirements.txt
224
+ ```
225
+
226
+ ### macOS
227
+ The Anaconda installation described for the Windows version is the recommended way of installing Pytheas dependencies. On top of the Windows instructions, the requirements to run the GUI version are installing python.app with
228
+
229
+ ```conda install -c anaconda python.app```
230
+
231
+ And calling the scripts using `pythonw`
232
+
233
+ ## Pulling Pytheas image through Docker
234
+ ### Windows 10/11
235
+ Install [Docker Desktop](https://hub.docker.com/editions/community/docker-ce-desktop-windows)
236
+ Open a Command Prompt (from the Start menu) and pull the Pytheas Docker image
237
+ ```
238
+ docker pull ldascenzo/pytheas:latest
239
+ ```
240
+
241
+ ### Linux (Ubuntu 20.04)
242
+ Follow the installation instructions for [Docker](https://docs.docker.com/engine/install/ubuntu/)
243
+ Open a Terminal prompt to pull the Pytheas Docker image
244
+ ```
245
+ docker pull ldascenzo/pytheas:latest
246
+ ```
247
+
248
+ ## Usage info for Linux, Windows, macOS and Docker versions
249
+ ### Windows 10/11
250
+ Using an *Anaconda Powershell Prompt*, navigate to the local pytheas directory. If for example the directory is in C:\Users\MainUser\pytheas the command will be
251
+ `cd C:\Users\MainUser\pytheas`
252
+
253
+ Navigate inside the directory of the chosen version (by default the GUI version) and run the scripts inside the respective sub-directories by using
254
+ ```python pytheas_<script_name>.py```
255
+
256
+ Select the options and parameters using the provided graphical interface. Refer to the Fig.1 of the main text and to the manual for more details on the order of the workflow and the usage/output of the single scripts.
257
+ ### Linux (Ubuntu 20.04)
258
+ Navigate within the Pytheas version directory (GUI or CL) and launch the scripts with
259
+ ```python3 pytheas_<script_name>.py```
260
+
261
+ Note that python3 instead of python may not be necessary if the default Python installation is set to be the 3. Refer to the Fig.1 of the main text and to the manual for more details on the order of the workflow and the usage/output of the single scripts.
262
+
263
+ ### macOS
264
+ Navigate within the Pytheas version directory (GUI or CL) and launch the scripts with
265
+ ```pythonw pytheas_<script_name>.py```
266
+
267
+ ### Docker image
268
+ Open a Bash shell within the container
269
+ ```docker run -it ldascenzo/pytheas /bin/bash```
270
+
271
+ Navigate within the main Pytheas directory, in the command line version
272
+ ```# cd pytheas/CL_version```
273
+
274
+ From there run Pytheas scripts following the normal instructions for the CL version
275
+ To transfer files between the Docker container and the host, use the following
276
+ ```docker cp <container name>:/file/path/within/container /host/path/target```
277
+
278
+
279
+ ## Demo: running an analysis on the Pytheas training set (RNA oligomers)
280
+ After the installation of Pytheas and all the dependencies, the training set output files can be reproduced by running the following steps. All three steps of this simple demo can be run in a few minutes on an average laptop or desktop computer.
281
+
282
+ ### 1. in silico digestion
283
+ Within the GUI_version/in_silico_digestion directory, the digest file can be obtained by running
284
+ ```python pytheas_insilico_digestion.py```
285
+ And changing the standard options for (all files are found within the Training_set directory):
286
+ - RNA_sequences = calibration_set_sequences.fasta
287
+ - Enzyme = None
288
+ - Nucleotides_light = nts_light.xlsx
289
+ - decoys = selected
290
+ - list_of_known_RNA_modifications = modfile_calibration_set.txt
291
+ - RNA_5end_chemistry = OH
292
+ - RNA_3end_chemistry = P
293
+
294
+ ### 2. Matching and scoring
295
+ Within the GUI_version/matching_scoring directory, the matching and scoring files can be obtained by running
296
+ ```python pytheas_matching_scoring.py```
297
+ And changing the standard options for (all files except the digest are found within the Training_set directory):
298
+ - Theoretical_digest = digest file obtained from the previous step
299
+ - MS_data = calibration_set.mgf
300
+ - isotopic_species = light
301
+
302
+ ### 3. Final report
303
+ Within the GUI_version/final_report, the final_report can be obtained by running
304
+ ```python pytheas_final_report.py```
305
+ Using the matching file obtained in the previous step as Match_output
@@ -0,0 +1,281 @@
1
+ # Pytheas 1, refreshed
2
+
3
+ **Pytheas finds RNA sequences and modifications in tandem mass spectra by database search**
4
+ (D'Ascenzo et al., *Nature Communications* 13, 2424 (2022)). It runs in six stages:
5
+ 1. in silico digestion with known modifications;
6
+ 2. MS2 matching with the Sp score;
7
+ 3. target-decoy FDR;
8
+ 4. a final report;
9
+ 5. sequence maps;
10
+ 6. annotated spectra.
11
+
12
+ **This repository packages the published code from https://github.com/ldascenzo/pytheas** so
13
+ that it installs with pip and runs on current Python, with a new desktop GUI.
14
+
15
+ **The analysis is unchanged.**
16
+ - The algorithms are the published ones. The analysis code was changed only where current
17
+ libraries no longer run it.
18
+ - Each stage was checked against the original code running on its original software stack.
19
+ - The one difference from the paper is the author's own 2022 fix to Sp scoring, which is
20
+ already in the upstream code.
21
+
22
+ See [VALIDATION.md](https://github.com/jwilliamson16/Pytheas1/blob/main/VALIDATION.md).
23
+
24
+ ## Install
25
+
26
+ You need Python 3.10 or newer. Install into a virtual environment; deleting its folder
27
+ uninstalls it.
28
+
29
+ ```
30
+ python3 -m venv ~/venvs/pytheas1
31
+ source ~/venvs/pytheas1/bin/activate # Windows: ~\venvs\pytheas1\Scripts\activate
32
+ pip install pytheas1
33
+ ```
34
+
35
+ **Other ways to get the package:**
36
+ - **The wheel (`.whl`)** is on the [Releases](https://github.com/jwilliamson16/Pytheas1/releases) page:
37
+ `pip install pytheas1-1.1.0-py3-none-any.whl`.
38
+ - **From a clone:** `git clone https://github.com/jwilliamson16/Pytheas1.git`, then `pip install .` inside it. The clone is about
39
+ 100 MB, mostly the paper's datasets in `paper_data/`.
40
+
41
+ **What gets installed:**
42
+ - all the dependencies: numpy, pandas, matplotlib, Biopython, pyteomics, openpyxl and PyQt5;
43
+ - the default nucleotide sheets and charge tables;
44
+ - a `pytheas1` command.
45
+
46
+ ## Try it on the paper's Training_set
47
+
48
+ The [Releases](https://github.com/jwilliamson16/Pytheas1/releases) page has `pytheas1_demo.zip`. It holds the Training_set
49
+ inputs (sequences, modifications, charge tables, spectra) and a parameter file with the
50
+ settings of the original README demo. Unzip it to get a `pytheas1_demo` folder.
51
+
52
+ **To make the same folder from a clone:**
53
+
54
+ ```
55
+ mkdir pytheas1_demo
56
+ cp paper_data/Training_set/{calibration_set_sequences.fasta,calibration_set.mgf,modfile_calibration_set.txt,charges_MS1_calibration.txt,charges_MS2_calibration.txt} pytheas1_demo/
57
+ cp examples/training_set/pytheas1_parameters.json pytheas1_demo/
58
+ ```
59
+
60
+ **To run it:**
61
+ - **In the GUI:** `pytheas1 --workdir pytheas1_demo` opens on the folder with the settings
62
+ loaded. Click **Run all**.
63
+ - **On the command line:** `pytheas1 --nogui --load_vars --workdir pytheas1_demo --all`.
64
+
65
+ **Results:** all six stages take a few minutes. The final report lists the 137
66
+ identifications of the paper's Training_set, with the Sp values described in
67
+ VALIDATION.md.
68
+
69
+ ## Use
70
+
71
+ ### GUI
72
+
73
+ Run `pytheas1`, or `pytheas1 --workdir FOLDER` to open it on a folder.
74
+ - **Tabs:** there is one tab per stage, with the options, order and help text of the original
75
+ Gooey forms. A blank input that comes from an earlier stage shows the file it will use.
76
+ - **Working folder:** choose one first. Settings saved there as `pytheas1_parameters.json`
77
+ load automatically.
78
+ - **Buttons:** **Run** on a tab runs that stage. **Run all** runs the six in order. **Stop**
79
+ ends the run.
80
+ - **GUI and command line give the same result.** A run saves the settings to
81
+ `pytheas1_parameters.json` and runs `pytheas1 --nogui --load_vars --workdir FOLDER
82
+ --<stage>`, so it also produces the same run record. Its output streams into the log, and
83
+ each tab shows ✓ or ✗ when its stage finishes.
84
+
85
+ ### Command line
86
+
87
+ ```
88
+ pytheas1 --write_params my_run.json # every setting, at its default
89
+ pytheas1 --nogui --load_vars --params my_run.json --all
90
+ pytheas1 --nogui --load_vars --params my_run.json --digest --match
91
+ ```
92
+
93
+ **The parameter file** has one section per stage: `digest`, `match`, `stats`, `report`,
94
+ `mapping` and `visualize`.
95
+ - Each section lists only the settings that differ from the defaults.
96
+ - Inputs that come from an earlier stage can be left out; they are picked up automatically.
97
+ Examples are the digest for Match, or the match output for the report.
98
+ - Input files can be given by name, relative to the working folder.
99
+
100
+ **Run records.** Each run writes two files to `pytheas1_runs/` in the working folder:
101
+ - `<time>.json`, recording the settings used, the files written and the library versions;
102
+ - `<time>.log`, the run's complete console output.
103
+
104
+ `log.txt` is the original Match stage's own three-line summary.
105
+
106
+ ### What each option means
107
+
108
+ The original program's manual is reproduced below under "Original README". It explains what
109
+ each stage does and every option. Its installation and launch instructions are for the
110
+ original Gooey version; for this package, use the ones above.
111
+
112
+ ## Status
113
+
114
+ - **macOS:** tested with Python 3.12.
115
+ - **Windows and Linux:** not yet tested. Please report problems.
116
+ - **Tests:** `pytest` runs every stage against the original code's outputs in about five
117
+ minutes. `pytest -m "not slow"` takes seconds and skips Match and visualization.
118
+
119
+ ## Questions and bug reports
120
+
121
+ Open an [issue](https://github.com/jwilliamson16/Pytheas1/issues). For a bug, attach the run's `.log` and `.json` from
122
+ `pytheas1_runs/`.
123
+
124
+ Known bugs of the original program, kept for fidelity, are listed in
125
+ [KNOWN_ISSUES.md](https://github.com/jwilliamson16/Pytheas1/blob/main/KNOWN_ISSUES.md). [PORTING.md](https://github.com/jwilliamson16/Pytheas1/blob/main/PORTING.md) lists every change made to the
126
+ analysis code.
127
+
128
+ ## Credit and license
129
+
130
+ Pytheas was written by Luigi D'Ascenzo (The Scripps Research Institute) and is distributed
131
+ under the MIT License (`LICENSE`). The 2026 packaging and GUI are from the Williamson lab,
132
+ Scripps Research.
133
+
134
+ Please cite:
135
+
136
+ > D'Ascenzo L., Popova A.M., Abernathy S., Sheng K., Limbach P.A., Williamson J.R. *Pytheas:
137
+ > a software package for the automated analysis of RNA sequences and modifications via
138
+ > tandem mass spectrometry.* Nat Commun 13, 2424 (2022).
139
+ > https://doi.org/10.1038/s41467-022-30057-5
140
+
141
+ Pytheas2 is a separate, newer program from the same group. It is available as a web service
142
+ through Cassia LLC: https://cassiallc.com
143
+
144
+ ---
145
+
146
+ # Original README
147
+
148
+ # Pytheas installation and basic usage notes
149
+
150
+ ## General notes
151
+ Pytheas has been fully tested on Windows 10, Linux (Ubuntu 20.04+) and macOS (10.14+, note that you need to use `pythonw` when launching the scripts on macOS). In the current release, there are two supported versions, one with a graphical interface (GUI) and one exclusively command line based (CL). The GUI version is the preferred one, but in case the user experiences issues while using it, the CL version is a good alternative albeit less user-friendly. For the purposes of inputs and outputs the scripts of the two versions are identical. Both versions require to call the component of the Pytheas workflow via command line, but the GUI version offers to the user a graphical interface to select the parameters and run the analysis. A third option is to run Pytheas through Docker, using the provided Dockerfile to build the image.
152
+ Several instances of files and libraries needed for the execution of other scripts (either already present or created while running Pytheas) are packaged together in the same directory, please be careful if moving the scripts from their original position as it may break some dependencies. It is therefore suggested to run the scripts in their provided directories and transfer around only the output files generated.
153
+
154
+ ## Pytheas Installation
155
+ ### Download GitHub repository
156
+ From the [GitHub repository](https://github.com/ldascenzo/pytheas) Pytheas can be downloaded either selecting the green “Code” button and choosing “Download ZIP” or cloning locally the git repository. The first option downloads a compressed directory with all the files, including the two GUI version and CL version main working directories. To clone the git repository, install git ([Windows instructions](https://git-scm.com/download/win)), then open a shell prompt (in Windows under *Start > Command Prompt*) and navigate into the desired directory for cloning Pytheas repository. Then, within this directory run `git clone https://github.com/ldascenzo/pytheas.git`
157
+ This will create a *pytheas* directory at the chosen location, with all the files needed to run Pytheas.
158
+
159
+ ### Windows 10/11
160
+ Download the latest [Anaconda version](https://docs.anaconda.com/anaconda/install/) based on the Windows version in usage (by April 2021 it is *Python 3.8 Windows 64-bit Graphical Installer*).
161
+ Install Anaconda leaving the standard options selected.
162
+
163
+ Open an Anaconda Powershell Prompt (*Start menu -> Anaconda Powershell Prompt*).
164
+ Within the prompt install some Python packages needed for Pytheas execution.
165
+ ```
166
+ conda create -n pytheas-env python=3.10 -y
167
+ conda activate pytheas-env
168
+ conda install -y numpy==1.23.1 pandas==1.4.1 matplotlib==3.5.0
169
+ conda install -y -c conda-forge gooey biopython
170
+ conda install -y -c bioconda pyteomics
171
+ conda install -y -c anaconda openpyxl
172
+ ```
173
+
174
+ ### Linux (Ubuntu 20.04)
175
+ Install the latest Python 3 version
176
+ ```
177
+ $ sudo apt-get update
178
+ $ sudo apt-get install python3
179
+ ```
180
+
181
+ Install pip, Python package manager to easily download, update and maintain all the libraries
182
+ ```
183
+ $ sudo apt install -y python3-pip
184
+ ```
185
+
186
+ Install some additional libraries that will be needed later, confirming with *Y* when needed during the installation.
187
+ ```
188
+ $ sudo apt-get install git curl libsdl2-mixer-2.0-0 libsdl2-image-2.0-0 libsdl2-2.0-0
189
+ ```
190
+
191
+ Install the wxPython package, which will be used for the GUI version.
192
+ ```
193
+ $ wget -P ~ "https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-20.04/wxPython-4.1.0-cp38-cp38-linux_x86_64.whl"
194
+ $ pip3 install ~/wxPython-4.1.0-cp38-cp38-linux_x86_64.whl
195
+ ```
196
+
197
+ Navigate to the local pytheas directory, then install all the requirements needed from the file *requirements.txt*. In case of problems with any of those, please refer to the respective documentations.
198
+ ```
199
+ $ pip3 install -r requirements.txt
200
+ ```
201
+
202
+ ### macOS
203
+ The Anaconda installation described for the Windows version is the recommended way of installing Pytheas dependencies. On top of the Windows instructions, the requirements to run the GUI version are installing python.app with
204
+
205
+ ```conda install -c anaconda python.app```
206
+
207
+ And calling the scripts using `pythonw`
208
+
209
+ ## Pulling Pytheas image through Docker
210
+ ### Windows 10/11
211
+ Install [Docker Desktop](https://hub.docker.com/editions/community/docker-ce-desktop-windows)
212
+ Open a Command Prompt (from the Start menu) and pull the Pytheas Docker image
213
+ ```
214
+ docker pull ldascenzo/pytheas:latest
215
+ ```
216
+
217
+ ### Linux (Ubuntu 20.04)
218
+ Follow the installation instructions for [Docker](https://docs.docker.com/engine/install/ubuntu/)
219
+ Open a Terminal prompt to pull the Pytheas Docker image
220
+ ```
221
+ docker pull ldascenzo/pytheas:latest
222
+ ```
223
+
224
+ ## Usage info for Linux, Windows, macOS and Docker versions
225
+ ### Windows 10/11
226
+ Using an *Anaconda Powershell Prompt*, navigate to the local pytheas directory. If for example the directory is in C:\Users\MainUser\pytheas the command will be
227
+ `cd C:\Users\MainUser\pytheas`
228
+
229
+ Navigate inside the directory of the chosen version (by default the GUI version) and run the scripts inside the respective sub-directories by using
230
+ ```python pytheas_<script_name>.py```
231
+
232
+ Select the options and parameters using the provided graphical interface. Refer to the Fig.1 of the main text and to the manual for more details on the order of the workflow and the usage/output of the single scripts.
233
+ ### Linux (Ubuntu 20.04)
234
+ Navigate within the Pytheas version directory (GUI or CL) and launch the scripts with
235
+ ```python3 pytheas_<script_name>.py```
236
+
237
+ Note that python3 instead of python may not be necessary if the default Python installation is set to be the 3. Refer to the Fig.1 of the main text and to the manual for more details on the order of the workflow and the usage/output of the single scripts.
238
+
239
+ ### macOS
240
+ Navigate within the Pytheas version directory (GUI or CL) and launch the scripts with
241
+ ```pythonw pytheas_<script_name>.py```
242
+
243
+ ### Docker image
244
+ Open a Bash shell within the container
245
+ ```docker run -it ldascenzo/pytheas /bin/bash```
246
+
247
+ Navigate within the main Pytheas directory, in the command line version
248
+ ```# cd pytheas/CL_version```
249
+
250
+ From there run Pytheas scripts following the normal instructions for the CL version
251
+ To transfer files between the Docker container and the host, use the following
252
+ ```docker cp <container name>:/file/path/within/container /host/path/target```
253
+
254
+
255
+ ## Demo: running an analysis on the Pytheas training set (RNA oligomers)
256
+ After the installation of Pytheas and all the dependencies, the training set output files can be reproduced by running the following steps. All three steps of this simple demo can be run in a few minutes on an average laptop or desktop computer.
257
+
258
+ ### 1. in silico digestion
259
+ Within the GUI_version/in_silico_digestion directory, the digest file can be obtained by running
260
+ ```python pytheas_insilico_digestion.py```
261
+ And changing the standard options for (all files are found within the Training_set directory):
262
+ - RNA_sequences = calibration_set_sequences.fasta
263
+ - Enzyme = None
264
+ - Nucleotides_light = nts_light.xlsx
265
+ - decoys = selected
266
+ - list_of_known_RNA_modifications = modfile_calibration_set.txt
267
+ - RNA_5end_chemistry = OH
268
+ - RNA_3end_chemistry = P
269
+
270
+ ### 2. Matching and scoring
271
+ Within the GUI_version/matching_scoring directory, the matching and scoring files can be obtained by running
272
+ ```python pytheas_matching_scoring.py```
273
+ And changing the standard options for (all files except the digest are found within the Training_set directory):
274
+ - Theoretical_digest = digest file obtained from the previous step
275
+ - MS_data = calibration_set.mgf
276
+ - isotopic_species = light
277
+
278
+ ### 3. Final report
279
+ Within the GUI_version/final_report, the final_report can be obtained by running
280
+ ```python pytheas_final_report.py```
281
+ Using the matching file obtained in the previous step as Match_output
@@ -0,0 +1,47 @@
1
+ [build-system]
2
+ requires = ["setuptools>=77"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "pytheas1"
7
+ dynamic = ["version"]
8
+ description = "Pytheas 1: automated analysis of RNA tandem mass spectrometry data (refreshed packaging of the published code)"
9
+ readme = "README.md"
10
+ license = "MIT"
11
+ license-files = ["LICENSE"]
12
+ authors = [{name = "Luigi D'Ascenzo"}]
13
+ requires-python = ">=3.10"
14
+ dependencies = [
15
+ "numpy>=1.25",
16
+ "pandas>=2.0",
17
+ "matplotlib>=3.7",
18
+ "biopython>=1.80",
19
+ "pyteomics>=4.5",
20
+ "openpyxl>=3.0",
21
+ "PyQt5>=5.15",
22
+ ]
23
+
24
+ [project.optional-dependencies]
25
+ test = ["pytest>=7"]
26
+
27
+ [project.scripts]
28
+ pytheas1 = "pytheas1.cli:main"
29
+
30
+ [project.urls]
31
+ Homepage = "https://github.com/jwilliamson16/Pytheas1"
32
+ Issues = "https://github.com/jwilliamson16/Pytheas1/issues"
33
+ "Original repository" = "https://github.com/ldascenzo/pytheas"
34
+ Paper = "https://doi.org/10.1038/s41467-022-30057-5"
35
+
36
+ [tool.setuptools.dynamic]
37
+ version = {attr = "pytheas1.__version__"}
38
+
39
+ [tool.setuptools.packages.find]
40
+ where = ["src"]
41
+
42
+ [tool.setuptools.package-data]
43
+ pytheas1 = ["data/*.xlsx", "data/*.txt", "data/js/*.js", "data/Charge_tables/*/*.txt"]
44
+
45
+ [tool.pytest.ini_options]
46
+ testpaths = ["tests"]
47
+ markers = ["slow: runs the Match stage (minutes)"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,10 @@
1
+ """Pytheas 1: automated analysis of RNA tandem mass spectrometry data.
2
+
3
+ Refreshed packaging of Pytheas (D'Ascenzo et al., Nature Communications
4
+ 2022; https://github.com/ldascenzo/pytheas, MIT License, (c) 2021 Luigi
5
+ D'Ascenzo). The analysis code is the published library code, ported to
6
+ current Python, numpy, pandas, matplotlib and Biopython without changing its
7
+ algorithms; see PORTING.md for every change.
8
+ """
9
+
10
+ __version__ = "1.1.0"