edms 0.0.post176__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 (48) hide show
  1. edms-0.0.post176/.gitignore +189 -0
  2. edms-0.0.post176/LICENSE +21 -0
  3. edms-0.0.post176/MANIFEST.in +2 -0
  4. edms-0.0.post176/PKG-INFO +157 -0
  5. edms-0.0.post176/README.md +102 -0
  6. edms-0.0.post176/autocomplete.sh +36 -0
  7. edms-0.0.post176/edms.yml +159 -0
  8. edms-0.0.post176/pyproject.toml +63 -0
  9. edms-0.0.post176/setup.cfg +4 -0
  10. edms-0.0.post176/src/edms/__init__.py +0 -0
  11. edms-0.0.post176/src/edms/__main__.py +4 -0
  12. edms-0.0.post176/src/edms/_version.py +34 -0
  13. edms-0.0.post176/src/edms/bio/__init__.py +0 -0
  14. edms-0.0.post176/src/edms/bio/clone.py +778 -0
  15. edms-0.0.post176/src/edms/bio/fastq.py +3630 -0
  16. edms-0.0.post176/src/edms/bio/genbank.py +150 -0
  17. edms-0.0.post176/src/edms/bio/ngs.py +650 -0
  18. edms-0.0.post176/src/edms/bio/pe.py +1941 -0
  19. edms-0.0.post176/src/edms/bio/pegLIT.py +249 -0
  20. edms-0.0.post176/src/edms/bio/primedesign.py +1819 -0
  21. edms-0.0.post176/src/edms/bio/qPCR.py +116 -0
  22. edms-0.0.post176/src/edms/bio/sanger.py +358 -0
  23. edms-0.0.post176/src/edms/bio/signature.py +256 -0
  24. edms-0.0.post176/src/edms/bio/transfect.py +230 -0
  25. edms-0.0.post176/src/edms/config.py +122 -0
  26. edms-0.0.post176/src/edms/dat/__init__.py +0 -0
  27. edms-0.0.post176/src/edms/dat/cosmic.py +311 -0
  28. edms-0.0.post176/src/edms/dat/cvar.py +170 -0
  29. edms-0.0.post176/src/edms/dat/ncbi.py +254 -0
  30. edms-0.0.post176/src/edms/gen/__init__.py +0 -0
  31. edms-0.0.post176/src/edms/gen/cli.py +160 -0
  32. edms-0.0.post176/src/edms/gen/image.py +176 -0
  33. edms-0.0.post176/src/edms/gen/io.py +474 -0
  34. edms-0.0.post176/src/edms/gen/plot.py +1298 -0
  35. edms-0.0.post176/src/edms/gen/stat.py +358 -0
  36. edms-0.0.post176/src/edms/gen/tidy.py +380 -0
  37. edms-0.0.post176/src/edms/main.py +1617 -0
  38. edms-0.0.post176/src/edms/resources/RE_type_IIS.csv +4 -0
  39. edms-0.0.post176/src/edms/resources/UMI_15_hamming_4_yield_18687_Esp3I_0.csv +18688 -0
  40. edms-0.0.post176/src/edms/resources/UMI_15_hamming_4_yield_19356.csv +19357 -0
  41. edms-0.0.post176/src/edms/resources/edms_pcr.csv +13 -0
  42. edms-0.0.post176/src/edms/utils.py +99 -0
  43. edms-0.0.post176/src/edms.egg-info/PKG-INFO +157 -0
  44. edms-0.0.post176/src/edms.egg-info/SOURCES.txt +46 -0
  45. edms-0.0.post176/src/edms.egg-info/dependency_links.txt +1 -0
  46. edms-0.0.post176/src/edms.egg-info/entry_points.txt +2 -0
  47. edms-0.0.post176/src/edms.egg-info/requires.txt +17 -0
  48. edms-0.0.post176/src/edms.egg-info/top_level.txt +1 -0
@@ -0,0 +1,189 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ *.py,cover
50
+ .hypothesis/
51
+ .pytest_cache/
52
+ cover/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ .pybuilder/
76
+ target/
77
+
78
+ # Jupyter Notebook
79
+ .ipynb_checkpoints
80
+
81
+ # IPython
82
+ profile_default/
83
+ ipython_config.py
84
+
85
+ # pyenv
86
+ # For a library or package, you might want to ignore these files since the code is
87
+ # intended to run in multiple environments; otherwise, check them in:
88
+ # .python-version
89
+
90
+ # pipenv
91
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
93
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
94
+ # install all needed dependencies.
95
+ #Pipfile.lock
96
+
97
+ # poetry
98
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
99
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
100
+ # commonly ignored for libraries.
101
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
102
+ #poetry.lock
103
+
104
+ # pdm
105
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
106
+ #pdm.lock
107
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
108
+ # in version control.
109
+ # https://pdm.fming.dev/latest/usage/project/#working-with-version-control
110
+ .pdm.toml
111
+ .pdm-python
112
+ .pdm-build/
113
+
114
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
115
+ __pypackages__/
116
+
117
+ # Celery stuff
118
+ celerybeat-schedule
119
+ celerybeat.pid
120
+
121
+ # SageMath parsed files
122
+ *.sage.py
123
+
124
+ # Environments
125
+ .env
126
+ .venv
127
+ env/
128
+ venv/
129
+ ENV/
130
+ env.bak/
131
+ venv.bak/
132
+
133
+ # Spyder project settings
134
+ .spyderproject
135
+ .spyproject
136
+
137
+ # Rope project settings
138
+ .ropeproject
139
+
140
+ # mkdocs documentation
141
+ /site
142
+
143
+ # mypy
144
+ .mypy_cache/
145
+ .dmypy.json
146
+ dmypy.json
147
+
148
+ # Pyre type checker
149
+ .pyre/
150
+
151
+ # pytype static type analyzer
152
+ .pytype/
153
+
154
+ # Cython debug symbols
155
+ cython_debug/
156
+
157
+ # PyCharm
158
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
159
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
160
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
161
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
162
+ #.idea/
163
+
164
+ # VSCode
165
+ .vscode/
166
+ *.code-workspace
167
+
168
+ # macOS
169
+ .DS_Store
170
+ .AppleDouble
171
+ .LSOverride
172
+
173
+ # Icon must end with two \r
174
+ Icon
175
+
176
+ # Thumbnails
177
+ ._*
178
+
179
+ # Files that might appear on external disks
180
+ .Spotlight-V100
181
+ .Trashes
182
+
183
+ # macOS system files
184
+ *.swp
185
+ *.swo
186
+
187
+ # Apple Silicon (ARM64) specific files (may not be required but can be included)
188
+ *.dSYM/
189
+ *.plist
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 marczepeda
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,2 @@
1
+ include README.md LICENSE
2
+ recursive-include src/edms/resources *.csv
@@ -0,0 +1,157 @@
1
+ Metadata-Version: 2.4
2
+ Name: edms
3
+ Version: 0.0.post176
4
+ Summary: Endogenous Deep Mutational Scans
5
+ Author-email: Marcanthony Zepeda <mzepeda@g.harvard.edu>
6
+ License: MIT License
7
+
8
+ Copyright (c) 2024 marczepeda
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
+ Project-URL: Homepage, https://github.com/marczepeda/edms
29
+ Project-URL: Repository, https://github.com/marczepeda/edms
30
+ Project-URL: Issues, https://github.com/marczepeda/edms/issues
31
+ Project-URL: Documentation, https://github.com/marczepeda/edms#readme
32
+ Classifier: Programming Language :: Python :: 3
33
+ Classifier: Operating System :: OS Independent
34
+ Requires-Python: >=3.11
35
+ Description-Content-Type: text/markdown
36
+ License-File: LICENSE
37
+ Requires-Dist: numpy
38
+ Requires-Dist: matplotlib
39
+ Requires-Dist: seaborn
40
+ Requires-Dist: pandas
41
+ Requires-Dist: biopython
42
+ Requires-Dist: requests
43
+ Requires-Dist: scipy
44
+ Requires-Dist: statsmodels
45
+ Requires-Dist: scikit-learn
46
+ Requires-Dist: Levenshtein
47
+ Requires-Dist: ViennaRNA
48
+ Requires-Dist: adjustText
49
+ Requires-Dist: pillow
50
+ Requires-Dist: dna-features-viewer
51
+ Requires-Dist: openpyxl
52
+ Requires-Dist: psutil
53
+ Requires-Dist: argcomplete
54
+ Dynamic: license-file
55
+
56
+ # Endogenous Deep Mutational Scans (EDMS)
57
+ ## Command Line Interface
58
+ ```shell
59
+ edms -h # or edms <TAB>
60
+ ```
61
+ ## Package Organization
62
+ - gen: input/output, data wrangling, generating plots, and statistics.
63
+ ```shell
64
+ import edms.gen.cli as cli
65
+ import edms.gen.image as im
66
+ import edms.gen.io as io
67
+ import edms.gen.plot as p
68
+ import edms.gen.stat as st
69
+ import edms.gen.tidy as t
70
+ ```
71
+ - bio: molecular biology & tissue culture workflows.
72
+ ```shell
73
+ import edms.bio.clone as cl
74
+ import edms.bio.fastq as fq
75
+ import edms.bio.genbank as gb
76
+ import edms.bio.ngs as ngs
77
+ import edms.bio.pe as pe
78
+ import edms.bio.pegLIT as pegLIT
79
+ import edms.bio.primedesign as primedesign
80
+ import edms.bio.qPCR as qPCR
81
+ import edms.bio.sanger as sanger
82
+ import edms.bio.signature as signature
83
+ import edms.bio.transfect as tf
84
+ ```
85
+ - dat: interacting with databases.
86
+ ```shell
87
+ import edms.dat.cosmic as co
88
+ import edms.dat.cvar as cv
89
+ import edms.dat.ncbi as ncbi
90
+ ```
91
+
92
+ ## Instructions
93
+ ### Install
94
+ 1. Download Anaconda:
95
+ - Mac: https://docs.anaconda.com/anaconda/install/mac-os/
96
+ - Windows: https://docs.anaconda.com/anaconda/install/windows/
97
+ - Linux: https://docs.anaconda.com/anaconda/install/linux/
98
+ 2. Download Git: https://github.com/git-guides/install-git
99
+ 3. Clone edms from github:
100
+ ```shell
101
+ cd ~
102
+ mkdir git
103
+ cd git
104
+ git clone https://github.com/marczepeda/edms.git
105
+ cd edms
106
+ ```
107
+ 4. Make the environment and install edms:
108
+ ```shell
109
+ conda env create -f edms.yml # When conda asks you to proceed, type "y"
110
+ conda activate edms
111
+ pip install -e . # Include the "."
112
+ bash autocomplete.sh # Optional: follow CLI instructions
113
+ conda deactivate
114
+ ```
115
+ 5. Optional: fastq.py UMI methods need umi_tools, cutadapt, samtools, bowtie2, and fgbio in a seperate environment
116
+ ```shell
117
+ conda create -n umi_tools umi_tools cutadapt samtools bowtie2 fgbio
118
+ ```
119
+
120
+ ### Update
121
+ 1. Enter the environment and uninstall edms:
122
+ ```shell
123
+ cd ~/git/edms
124
+ conda activate edms
125
+ pip uninstall -y edms
126
+ rm -rf build/ dist/ *.egg-info
127
+
128
+ ```
129
+ 2. Pull latest version from github and install edms:
130
+ ```shell
131
+ git pull origin main
132
+ pip install -e . # Include the "."
133
+ conda deactivate
134
+ ```
135
+
136
+ ## PE Strategies
137
+ | Strategy | Description | Reference |
138
+ |----------|-------------|---------- |
139
+ | PE1 | Cas9(H840A) - M-MLV RT<br>+ pegRNA | [Search-and-replace genome editing without double-strand breaks or donor DNA](https://www.nature.com/articles/s41586-019-1711-4) |
140
+ | PE2 | Cas9(H840A) – M-MLV RT(D200N/L603W/T330P/T306K/W313F)<br>+ pegRNA | [Search-and-replace genome editing without double-strand breaks or donor DNA](https://www.nature.com/articles/s41586-019-1711-4) |
141
+ | PE3 | Cas9(H840A) – M-MLV RT(D200N/L603W/T330P/T306K/W313F)<br>+ ngRNA (targets non-edited strand) | [Search-and-replace genome editing without double-strand breaks or donor DNA](https://www.nature.com/articles/s41586-019-1711-4) |
142
+ | PE4 | Cas9(H840A) – M-MLV RT(D200N/L603W/T330P/T306K/W313F)<br>+ MLH1dn (MMR evasion) | [Enhanced prime editing systems by manipulating cellular determinants of editing outcomes](https://www.cell.com/cell/fulltext/S0092-8674(21)01065-5?_returnURL=https%3A%2F%2Flinkinghub.elsevier.com%2Fretrieve%2Fpii%2FS0092867421010655%3Fshowall%3Dtrue) |
143
+ | PE5 | Cas9(H840A) – M-MLV RT(D200N/L603W/T330P/T306K/W313F)<br>+ MLH1dn (MMR evasion)<br>+ ngRNA (targets non-edited strand) | [Enhanced prime editing systems by manipulating cellular determinants of editing outcomes](https://www.cell.com/cell/fulltext/S0092-8674(21)01065-5?_returnURL=https%3A%2F%2Flinkinghub.elsevier.com%2Fretrieve%2Fpii%2FS0092867421010655%3Fshowall%3Dtrue) |
144
+ | PE6a-d | Cas9(H840A) – ...<br>PEa: ... - evo-Ec48 RT<br>PEb: ... - evo-Tf1 RT<br>PEc: ... - Tf1 RT variant<br>PEd: ... - M-MLV RT variant | [Phage-assisted evolution and protein engineering yield compact, efficient prime editors](https://www.cell.com/cell/fulltext/S0092-8674(23)00854-1?uuid=uuid%3Acdb9bfe9-fd83-4a51-8a65-51f2e8e5cfe2) |
145
+ | PE6e-f | Cas9(H840A) variants – ...<br>M-MLV RT(ΔRNAseH) | [Phage-assisted evolution and protein engineering yield compact, efficient prime editors](https://www.cell.com/cell/fulltext/S0092-8674(23)00854-1?uuid=uuid%3Acdb9bfe9-fd83-4a51-8a65-51f2e8e5cfe2) |
146
+ | PE7 | Cas9(H840A) – M-MLV RT(D200N/L603W/T330P/T306K/W313F) - La (RNA binding protein that stabilizes pegRNA)<br>+/- ngRNA (targets non-edited strand) | [Improving prime editing with an endogenous small RNA-binding protein](https://www.nature.com/articles/s41586-024-07259-6) |
147
+ | PEmax | Mammalian codon-optimized PE | [Enhanced prime editing systems by manipulating cellular determinants of editing outcomes](https://www.cell.com/cell/fulltext/S0092-8674(21)01065-5?_returnURL=https%3A%2F%2Flinkinghub.elsevier.com%2Fretrieve%2Fpii%2FS0092867421010655%3Fshowall%3Dtrue) |
148
+ | pegRNA | spacer - scaffold - RTT - PBS (makes the edit) | [Search-and-replace genome editing without double-strand breaks or donor DNA](https://www.nature.com/articles/s41586-019-1711-4) |
149
+ | epegRNA | spacer - scaffold - RTT - PBS - linker - tevoPreQ (makes the edit; more stable pegRNA) | [Engineered pegRNAs improve prime editing efficiency](https://www.nature.com/articles/s41587-021-01039-7) |
150
+ | ngRNA | spacer - scaffold (targets non-edited strand) | [Search-and-replace genome editing without double-strand breaks or donor DNA](https://www.nature.com/articles/s41586-019-1711-4) |
151
+ | MLH1dn | Dominant negative MLH1 (MMR evasion) | [Enhanced prime editing systems by manipulating cellular determinants of editing outcomes](https://www.cell.com/cell/fulltext/S0092-8674(21)01065-5?_returnURL=https%3A%2F%2Flinkinghub.elsevier.com%2Fretrieve%2Fpii%2FS0092867421010655%3Fshowall%3Dtrue) |
152
+ | silent mutations | Larger prime edits are more efficient through bypassing MMR | [Enhanced prime editing systems by manipulating cellular determinants of editing outcomes](https://www.cell.com/cell/fulltext/S0092-8674(21)01065-5?_returnURL=https%3A%2F%2Flinkinghub.elsevier.com%2Fretrieve%2Fpii%2FS0092867421010655%3Fshowall%3Dtrue) |
153
+ | La | Small RNA binding protein that stabilizes pegRNA | [Improving prime editing with an endogenous small RNA-binding protein](https://www.nature.com/articles/s41586-024-07259-6) |
154
+ | PE-eVLP | Engineered Virus-Like Particle for Prime Editors | [Engineered virus-like particles for transient delivery of prime editor ribonucleoprotein complexes in vivo](https://www.nature.com/articles/s41587-023-02078-y) |
155
+ | dNTPs | HSCs have low dNTP levels, limiting reverse transcription | [Enhancing prime editing in hematopoietic stem and progenitor cells by modulating nucleotide metabolism](https://www.nature.com/articles/s41587-024-02266-4) |
156
+ | Vpx | HSCs express SAMHD1 (triphosphohydrolase), which depletes dNTPs. Accessory lentiviral protein Vpx, encoded by HIV-2 and simian immunodeficiency viruses (SIVs), associates with the CRL4-DCAF1 E3 ubiquitin ligase to target SAMHD1 for proteasomal degradation. | [Enhancing prime editing in hematopoietic stem and progenitor cells by modulating nucleotide metabolism](https://www.nature.com/articles/s41587-024-02266-4) |
157
+ | MLH-SB | Small protein binder that disrupts MLH1 & PMS2 binding (MMR evasion) | [AI-generated small binder improves prime editing (Preprint)](https://www.biorxiv.org/content/10.1101/2024.09.11.612443v1.full) |
@@ -0,0 +1,102 @@
1
+ # Endogenous Deep Mutational Scans (EDMS)
2
+ ## Command Line Interface
3
+ ```shell
4
+ edms -h # or edms <TAB>
5
+ ```
6
+ ## Package Organization
7
+ - gen: input/output, data wrangling, generating plots, and statistics.
8
+ ```shell
9
+ import edms.gen.cli as cli
10
+ import edms.gen.image as im
11
+ import edms.gen.io as io
12
+ import edms.gen.plot as p
13
+ import edms.gen.stat as st
14
+ import edms.gen.tidy as t
15
+ ```
16
+ - bio: molecular biology & tissue culture workflows.
17
+ ```shell
18
+ import edms.bio.clone as cl
19
+ import edms.bio.fastq as fq
20
+ import edms.bio.genbank as gb
21
+ import edms.bio.ngs as ngs
22
+ import edms.bio.pe as pe
23
+ import edms.bio.pegLIT as pegLIT
24
+ import edms.bio.primedesign as primedesign
25
+ import edms.bio.qPCR as qPCR
26
+ import edms.bio.sanger as sanger
27
+ import edms.bio.signature as signature
28
+ import edms.bio.transfect as tf
29
+ ```
30
+ - dat: interacting with databases.
31
+ ```shell
32
+ import edms.dat.cosmic as co
33
+ import edms.dat.cvar as cv
34
+ import edms.dat.ncbi as ncbi
35
+ ```
36
+
37
+ ## Instructions
38
+ ### Install
39
+ 1. Download Anaconda:
40
+ - Mac: https://docs.anaconda.com/anaconda/install/mac-os/
41
+ - Windows: https://docs.anaconda.com/anaconda/install/windows/
42
+ - Linux: https://docs.anaconda.com/anaconda/install/linux/
43
+ 2. Download Git: https://github.com/git-guides/install-git
44
+ 3. Clone edms from github:
45
+ ```shell
46
+ cd ~
47
+ mkdir git
48
+ cd git
49
+ git clone https://github.com/marczepeda/edms.git
50
+ cd edms
51
+ ```
52
+ 4. Make the environment and install edms:
53
+ ```shell
54
+ conda env create -f edms.yml # When conda asks you to proceed, type "y"
55
+ conda activate edms
56
+ pip install -e . # Include the "."
57
+ bash autocomplete.sh # Optional: follow CLI instructions
58
+ conda deactivate
59
+ ```
60
+ 5. Optional: fastq.py UMI methods need umi_tools, cutadapt, samtools, bowtie2, and fgbio in a seperate environment
61
+ ```shell
62
+ conda create -n umi_tools umi_tools cutadapt samtools bowtie2 fgbio
63
+ ```
64
+
65
+ ### Update
66
+ 1. Enter the environment and uninstall edms:
67
+ ```shell
68
+ cd ~/git/edms
69
+ conda activate edms
70
+ pip uninstall -y edms
71
+ rm -rf build/ dist/ *.egg-info
72
+
73
+ ```
74
+ 2. Pull latest version from github and install edms:
75
+ ```shell
76
+ git pull origin main
77
+ pip install -e . # Include the "."
78
+ conda deactivate
79
+ ```
80
+
81
+ ## PE Strategies
82
+ | Strategy | Description | Reference |
83
+ |----------|-------------|---------- |
84
+ | PE1 | Cas9(H840A) - M-MLV RT<br>+ pegRNA | [Search-and-replace genome editing without double-strand breaks or donor DNA](https://www.nature.com/articles/s41586-019-1711-4) |
85
+ | PE2 | Cas9(H840A) – M-MLV RT(D200N/L603W/T330P/T306K/W313F)<br>+ pegRNA | [Search-and-replace genome editing without double-strand breaks or donor DNA](https://www.nature.com/articles/s41586-019-1711-4) |
86
+ | PE3 | Cas9(H840A) – M-MLV RT(D200N/L603W/T330P/T306K/W313F)<br>+ ngRNA (targets non-edited strand) | [Search-and-replace genome editing without double-strand breaks or donor DNA](https://www.nature.com/articles/s41586-019-1711-4) |
87
+ | PE4 | Cas9(H840A) – M-MLV RT(D200N/L603W/T330P/T306K/W313F)<br>+ MLH1dn (MMR evasion) | [Enhanced prime editing systems by manipulating cellular determinants of editing outcomes](https://www.cell.com/cell/fulltext/S0092-8674(21)01065-5?_returnURL=https%3A%2F%2Flinkinghub.elsevier.com%2Fretrieve%2Fpii%2FS0092867421010655%3Fshowall%3Dtrue) |
88
+ | PE5 | Cas9(H840A) – M-MLV RT(D200N/L603W/T330P/T306K/W313F)<br>+ MLH1dn (MMR evasion)<br>+ ngRNA (targets non-edited strand) | [Enhanced prime editing systems by manipulating cellular determinants of editing outcomes](https://www.cell.com/cell/fulltext/S0092-8674(21)01065-5?_returnURL=https%3A%2F%2Flinkinghub.elsevier.com%2Fretrieve%2Fpii%2FS0092867421010655%3Fshowall%3Dtrue) |
89
+ | PE6a-d | Cas9(H840A) – ...<br>PEa: ... - evo-Ec48 RT<br>PEb: ... - evo-Tf1 RT<br>PEc: ... - Tf1 RT variant<br>PEd: ... - M-MLV RT variant | [Phage-assisted evolution and protein engineering yield compact, efficient prime editors](https://www.cell.com/cell/fulltext/S0092-8674(23)00854-1?uuid=uuid%3Acdb9bfe9-fd83-4a51-8a65-51f2e8e5cfe2) |
90
+ | PE6e-f | Cas9(H840A) variants – ...<br>M-MLV RT(ΔRNAseH) | [Phage-assisted evolution and protein engineering yield compact, efficient prime editors](https://www.cell.com/cell/fulltext/S0092-8674(23)00854-1?uuid=uuid%3Acdb9bfe9-fd83-4a51-8a65-51f2e8e5cfe2) |
91
+ | PE7 | Cas9(H840A) – M-MLV RT(D200N/L603W/T330P/T306K/W313F) - La (RNA binding protein that stabilizes pegRNA)<br>+/- ngRNA (targets non-edited strand) | [Improving prime editing with an endogenous small RNA-binding protein](https://www.nature.com/articles/s41586-024-07259-6) |
92
+ | PEmax | Mammalian codon-optimized PE | [Enhanced prime editing systems by manipulating cellular determinants of editing outcomes](https://www.cell.com/cell/fulltext/S0092-8674(21)01065-5?_returnURL=https%3A%2F%2Flinkinghub.elsevier.com%2Fretrieve%2Fpii%2FS0092867421010655%3Fshowall%3Dtrue) |
93
+ | pegRNA | spacer - scaffold - RTT - PBS (makes the edit) | [Search-and-replace genome editing without double-strand breaks or donor DNA](https://www.nature.com/articles/s41586-019-1711-4) |
94
+ | epegRNA | spacer - scaffold - RTT - PBS - linker - tevoPreQ (makes the edit; more stable pegRNA) | [Engineered pegRNAs improve prime editing efficiency](https://www.nature.com/articles/s41587-021-01039-7) |
95
+ | ngRNA | spacer - scaffold (targets non-edited strand) | [Search-and-replace genome editing without double-strand breaks or donor DNA](https://www.nature.com/articles/s41586-019-1711-4) |
96
+ | MLH1dn | Dominant negative MLH1 (MMR evasion) | [Enhanced prime editing systems by manipulating cellular determinants of editing outcomes](https://www.cell.com/cell/fulltext/S0092-8674(21)01065-5?_returnURL=https%3A%2F%2Flinkinghub.elsevier.com%2Fretrieve%2Fpii%2FS0092867421010655%3Fshowall%3Dtrue) |
97
+ | silent mutations | Larger prime edits are more efficient through bypassing MMR | [Enhanced prime editing systems by manipulating cellular determinants of editing outcomes](https://www.cell.com/cell/fulltext/S0092-8674(21)01065-5?_returnURL=https%3A%2F%2Flinkinghub.elsevier.com%2Fretrieve%2Fpii%2FS0092867421010655%3Fshowall%3Dtrue) |
98
+ | La | Small RNA binding protein that stabilizes pegRNA | [Improving prime editing with an endogenous small RNA-binding protein](https://www.nature.com/articles/s41586-024-07259-6) |
99
+ | PE-eVLP | Engineered Virus-Like Particle for Prime Editors | [Engineered virus-like particles for transient delivery of prime editor ribonucleoprotein complexes in vivo](https://www.nature.com/articles/s41587-023-02078-y) |
100
+ | dNTPs | HSCs have low dNTP levels, limiting reverse transcription | [Enhancing prime editing in hematopoietic stem and progenitor cells by modulating nucleotide metabolism](https://www.nature.com/articles/s41587-024-02266-4) |
101
+ | Vpx | HSCs express SAMHD1 (triphosphohydrolase), which depletes dNTPs. Accessory lentiviral protein Vpx, encoded by HIV-2 and simian immunodeficiency viruses (SIVs), associates with the CRL4-DCAF1 E3 ubiquitin ligase to target SAMHD1 for proteasomal degradation. | [Enhancing prime editing in hematopoietic stem and progenitor cells by modulating nucleotide metabolism](https://www.nature.com/articles/s41587-024-02266-4) |
102
+ | MLH-SB | Small protein binder that disrupts MLH1 & PMS2 binding (MMR evasion) | [AI-generated small binder improves prime editing (Preprint)](https://www.biorxiv.org/content/10.1101/2024.09.11.612443v1.full) |
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env bash
2
+
3
+ CLI_COMMAND="edms"
4
+ RC_FILE=""
5
+ SHELL_TYPE="$(basename "$SHELL")"
6
+
7
+ # Determine shell and config file
8
+ if [[ "$SHELL_TYPE" == "bash" ]]; then
9
+ RC_FILE="$HOME/.bashrc"
10
+ AUTOCOMP_LINE="eval \"\$(register-python-argcomplete $CLI_COMMAND)\""
11
+ elif [[ "$SHELL_TYPE" == "zsh" ]]; then
12
+ RC_FILE="$HOME/.zshrc"
13
+ AUTOCOMP_LINE="eval \"\$(register-python-argcomplete $CLI_COMMAND)\""
14
+ COMPINIT_LINE="autoload -U compinit && compinit"
15
+ else
16
+ echo "Unsupported shell: $SHELL_TYPE"
17
+ exit 1
18
+ fi
19
+
20
+ # Add compinit if needed (for Zsh)
21
+ if [[ "$SHELL_TYPE" == "zsh" ]]; then
22
+ if ! grep -q "compinit" "$RC_FILE"; then
23
+ echo "Adding compinit to $RC_FILE..."
24
+ echo -e "\n$COMPINIT_LINE" >> "$RC_FILE"
25
+ fi
26
+ fi
27
+
28
+ # Add autocomplete line if not already present
29
+ if ! grep -Fq "$AUTOCOMP_LINE" "$RC_FILE"; then
30
+ echo "Adding autocomplete line to $RC_FILE..."
31
+ echo -e "\n$AUTOCOMP_LINE" >> "$RC_FILE"
32
+ else
33
+ echo "Autocomplete already enabled in $RC_FILE."
34
+ fi
35
+
36
+ echo "Done. Please run: source $RC_FILE"
@@ -0,0 +1,159 @@
1
+ name: edms
2
+ channels:
3
+ - anaconda
4
+ - defaults
5
+ - conda-forge
6
+ - bioconda
7
+ - https://repo.anaconda.com/pkgs/main
8
+ - https://repo.anaconda.com/pkgs/r
9
+ dependencies:
10
+ - adjusttext=1.3.0=pyhd8ed1ab_0
11
+ - appnope=0.1.4=pyhd8ed1ab_1
12
+ - asttokens=3.0.0=pyhd8ed1ab_1
13
+ - biopython=1.85=py312hea69d52_1
14
+ - blas=2.131=openblas
15
+ - blas-devel=3.9.0=31_h11c0a38_openblas
16
+ - brotli=1.1.0=hd74edd7_2
17
+ - brotli-bin=1.1.0=hd74edd7_2
18
+ - brotli-python=1.1.0=py312hde4cb15_2
19
+ - bzip2=1.0.8=h80987f9_6
20
+ - c-ares=1.34.5=h5505292_0
21
+ - ca-certificates=2025.8.3=hbd8a1cb_0
22
+ - certifi=2025.8.3=pyhd8ed1ab_0
23
+ - cffi=1.17.1=py312h0fad829_0
24
+ - charset-normalizer=3.4.1=pyhd8ed1ab_0
25
+ - comm=0.2.2=pyhd8ed1ab_1
26
+ - contourpy=1.3.2=py312hb23fbb9_0
27
+ - cycler=0.12.1=pyhd8ed1ab_1
28
+ - debugpy=1.8.14=py312hd8f9ff3_0
29
+ - decorator=5.2.1=pyhd8ed1ab_0
30
+ - et_xmlfile=2.0.0=pyhd8ed1ab_1
31
+ - exceptiongroup=1.2.2=pyhd8ed1ab_1
32
+ - executing=2.2.0=pyhd8ed1ab_0
33
+ - expat=2.7.0=h286801f_0
34
+ - fonttools=4.57.0=py312h998013c_0
35
+ - freetype=2.13.3=hce30654_1
36
+ - git=2.49.0=pl5321hd71a902_0
37
+ - h2=4.2.0=pyhd8ed1ab_0
38
+ - hpack=4.1.0=pyhd8ed1ab_0
39
+ - hyperframe=6.1.0=pyhd8ed1ab_0
40
+ - idna=3.10=pyhd8ed1ab_1
41
+ - importlib-metadata=8.6.1=pyha770c72_0
42
+ - ipykernel=6.29.5=pyh57ce528_0
43
+ - ipython=9.2.0=pyhfb0248b_0
44
+ - ipython_pygments_lexers=1.1.1=pyhd8ed1ab_0
45
+ - jedi=0.19.2=pyhd8ed1ab_1
46
+ - jupyter_client=8.6.3=pyhd8ed1ab_1
47
+ - jupyter_core=5.7.2=pyh31011fe_1
48
+ - kiwisolver=1.4.8=py312h2c4a281_0
49
+ - krb5=1.21.3=h237132a_0
50
+ - lcms2=2.17=h7eeda09_0
51
+ - lerc=4.0.0=hd64df32_1
52
+ - levenshtein=0.27.1=py312hd8f9ff3_0
53
+ - libblas=3.9.0=31_h10e41b3_openblas
54
+ - libbrotlicommon=1.1.0=hd74edd7_2
55
+ - libbrotlidec=1.1.0=hd74edd7_2
56
+ - libbrotlienc=1.1.0=hd74edd7_2
57
+ - libcblas=3.9.0=31_hb3479ef_openblas
58
+ - libcurl=8.14.1=h73640d1_0
59
+ - libcxx=20.1.3=ha82da77_0
60
+ - libdeflate=1.22=hd74edd7_0
61
+ - libedit=3.1.20191231=hc8eb9b7_2
62
+ - libev=4.33=h93a5062_2
63
+ - libexpat=2.7.0=h286801f_0
64
+ - libffi=3.4.4=hca03da5_1
65
+ - libfreetype=2.13.3=hce30654_1
66
+ - libfreetype6=2.13.3=h1d14073_1
67
+ - libgfortran=14.2.0=heb5dd2a_105
68
+ - libgfortran5=14.2.0=h2c44a93_105
69
+ - libiconv=1.18=hfe07756_1
70
+ - libintl=0.23.1=h493aca8_0
71
+ - libjpeg-turbo=3.1.0=h5505292_0
72
+ - liblapack=3.9.0=31_hc9a63f6_openblas
73
+ - liblapacke=3.9.0=31_hbb7bcf8_openblas
74
+ - liblzma=5.8.1=h39f12f2_0
75
+ - libnghttp2=1.64.0=h6d7220d_0
76
+ - libopenblas=0.3.29=openmp_hf332438_0
77
+ - libpng=1.6.47=h3783ad8_0
78
+ - libsodium=1.0.20=h99b78c6_0
79
+ - libsqlite=3.45.2=h091b4b1_0
80
+ - libssh2=1.11.1=h1590b86_0
81
+ - libtiff=4.7.0=ha962b0a_2
82
+ - libwebp-base=1.5.0=h2471fea_0
83
+ - libxcb=1.17.0=hdb1d25a_0
84
+ - libzlib=1.3.1=h8359307_2
85
+ - llvm-openmp=20.1.3=hdb05f8b_0
86
+ - matplotlib-base=3.10.1=py312hdbc7e53_0
87
+ - matplotlib-inline=0.1.7=pyhd8ed1ab_1
88
+ - munkres=1.1.4=pyh9f0ad1d_0
89
+ - ncurses=6.4=h313beb8_0
90
+ - nest-asyncio=1.6.0=pyhd8ed1ab_1
91
+ - numpy=2.0.1=py312h7f4fdc5_1
92
+ - numpy-base=2.0.1=py312he047099_1
93
+ - openblas=0.3.29=openmp_hea878ba_0
94
+ - openjpeg=2.5.3=h8a3d83b_0
95
+ - openpyxl=3.1.5=py312hf6e0af7_1
96
+ - openssl=3.5.2=he92f556_0
97
+ - packaging=25.0=pyh29332c3_1
98
+ - pandas=2.2.3=py312hcb1e3ce_3
99
+ - parso=0.8.4=pyhd8ed1ab_1
100
+ - patsy=1.0.1=pyhd8ed1ab_1
101
+ - pcre2=10.44=ha881caa_2
102
+ - perl=5.32.1=7_h4614cfb_perl5
103
+ - pexpect=4.9.0=pyhd8ed1ab_1
104
+ - pickleshare=0.7.5=pyhd8ed1ab_1004
105
+ - pillow=11.1.0=py312h50aef2c_0
106
+ - pip=25.1=pyh8b19718_0
107
+ - platformdirs=4.3.7=pyh29332c3_0
108
+ - prompt-toolkit=3.0.51=pyha770c72_0
109
+ - psutil=7.0.0=py312hea69d52_0
110
+ - pthread-stubs=0.4=hd74edd7_1002
111
+ - ptyprocess=0.7.0=pyhd8ed1ab_1
112
+ - pure_eval=0.2.3=pyhd8ed1ab_1
113
+ - pycparser=2.22=pyh29332c3_1
114
+ - pygments=2.19.1=pyhd8ed1ab_0
115
+ - pyparsing=3.2.3=pyhd8ed1ab_1
116
+ - pysocks=1.7.1=pyha55dd90_7
117
+ - python=3.12.2=hdf0ec26_0_cpython
118
+ - python-dateutil=2.9.0.post0=pyhff2d567_1
119
+ - python-levenshtein=0.27.1=pyhff2d567_0
120
+ - python-tzdata=2025.2=pyhd8ed1ab_0
121
+ - python_abi=3.12=7_cp312
122
+ - pytz=2025.2=pyhd8ed1ab_0
123
+ - pyzmq=26.4.0=py312hf4875e0_0
124
+ - qhull=2020.2=h420ef59_5
125
+ - rapidfuzz=3.13.0=py312hd8f9ff3_0
126
+ - readline=8.2=h1a28f6b_0
127
+ - requests=2.32.3=py312hca03da5_1
128
+ - scipy=1.15.2=py312h99a188d_0
129
+ - setuptools=75.8.0=py312hca03da5_0
130
+ - six=1.17.0=pyhd8ed1ab_0
131
+ - sqlite=3.45.2=hf2abe2d_0
132
+ - stack_data=0.6.3=pyhd8ed1ab_1
133
+ - statsmodels=0.14.4=py312h755e627_0
134
+ - tk=8.6.13=h5083fa2_1
135
+ - tornado=6.4.2=py312hea69d52_0
136
+ - traitlets=5.14.3=pyhd8ed1ab_1
137
+ - typing_extensions=4.13.2=pyh29332c3_0
138
+ - tzdata=2025a=h04d1e81_0
139
+ - unicodedata2=16.0.0=py312hea69d52_0
140
+ - urllib3=2.4.0=pyhd8ed1ab_0
141
+ - wcwidth=0.2.13=pyhd8ed1ab_1
142
+ - wheel=0.45.1=py312hca03da5_0
143
+ - xorg-libxau=1.0.12=h5505292_0
144
+ - xorg-libxdmcp=1.1.5=hd74edd7_0
145
+ - xz=5.6.4=h80987f9_1
146
+ - zeromq=4.3.5=hc1bb282_7
147
+ - zipp=3.21.0=pyhd8ed1ab_1
148
+ - zlib=1.3.1=h8359307_2
149
+ - zstandard=0.23.0=py312hea69d52_2
150
+ - zstd=1.5.7=h6491c7d_2
151
+ - pip:
152
+ - argcomplete==3.6.2
153
+ - dna-features-viewer==3.1.4
154
+ - joblib==1.4.2
155
+ - scikit-learn==1.6.1
156
+ - seaborn==0.13.2
157
+ - threadpoolctl==3.6.0
158
+ - viennarna==2.7.0
159
+ prefix: /opt/anaconda3/envs/edms