streptocad 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. streptocad-1.0.0/.gitignore +177 -0
  2. streptocad-1.0.0/HISTORY.rst +74 -0
  3. streptocad-1.0.0/LICENSE +21 -0
  4. streptocad-1.0.0/PKG-INFO +224 -0
  5. streptocad-1.0.0/README.md +191 -0
  6. streptocad-1.0.0/pyproject.toml +119 -0
  7. streptocad-1.0.0/streptocad/__init__.py +9 -0
  8. streptocad-1.0.0/streptocad/biopython_compat.py +23 -0
  9. streptocad-1.0.0/streptocad/cloning/__init__.py +5 -0
  10. streptocad-1.0.0/streptocad/cloning/cas3_plasmid_cloning.py +168 -0
  11. streptocad-1.0.0/streptocad/cloning/gibson_cloning.py +433 -0
  12. streptocad-1.0.0/streptocad/cloning/golden_gate_cloning.py +512 -0
  13. streptocad-1.0.0/streptocad/cloning/pcr_simulation.py +141 -0
  14. streptocad-1.0.0/streptocad/cloning/plasmid_processing.py +239 -0
  15. streptocad-1.0.0/streptocad/cloning/ssDNA_bridging.py +88 -0
  16. streptocad-1.0.0/streptocad/crispr/__init__.py +5 -0
  17. streptocad-1.0.0/streptocad/crispr/crispr_best.py +247 -0
  18. streptocad-1.0.0/streptocad/crispr/guideRNA_crispri.py +437 -0
  19. streptocad-1.0.0/streptocad/crispr/guideRNAcas3_9.py +662 -0
  20. streptocad-1.0.0/streptocad/experimental/__init__.py +1 -0
  21. streptocad-1.0.0/streptocad/experimental/cas12a/README.md +3 -0
  22. streptocad-1.0.0/streptocad/experimental/cas12a/__init__.py +1 -0
  23. streptocad-1.0.0/streptocad/experimental/cas12a/guideRNAcas12a_ttn.py +800 -0
  24. streptocad-1.0.0/streptocad/primers/__init__.py +5 -0
  25. streptocad-1.0.0/streptocad/primers/primer_analysis.py +111 -0
  26. streptocad-1.0.0/streptocad/primers/primer_generation.py +442 -0
  27. streptocad-1.0.0/streptocad/primers/tm.py +90 -0
  28. streptocad-1.0.0/streptocad/sequence_loading/__init__.py +1 -0
  29. streptocad-1.0.0/streptocad/sequence_loading/sequence_loading.py +237 -0
  30. streptocad-1.0.0/streptocad/teemi_functions.py +118 -0
  31. streptocad-1.0.0/streptocad/utils.py +639 -0
  32. streptocad-1.0.0/streptocad/wet_lab/__init__.py +5 -0
  33. streptocad-1.0.0/streptocad/wet_lab/lab_functions.py +118 -0
@@ -0,0 +1,177 @@
1
+ # Data
2
+ /data/
3
+ /notebooks/experiments/
4
+
5
+ # Mac OS-specific storage files
6
+ .DS_Store
7
+
8
+ # vim
9
+ *.swp
10
+ *.swo
11
+
12
+ ## https://github.com/github/gitignore/blob/4488915eec0b3a45b5c63ead28f286819c0917de/Python.gitignore
13
+
14
+ # Byte-compiled / optimized / DLL files
15
+ __pycache__/
16
+ *.py[cod]
17
+ *$py.class
18
+
19
+ # C extensions
20
+ *.so
21
+
22
+ # Distribution / packaging
23
+ .Python
24
+ build/
25
+ develop-eggs/
26
+ dist/
27
+ downloads/
28
+ eggs/
29
+ .eggs/
30
+ lib/
31
+ lib64/
32
+ parts/
33
+ sdist/
34
+ var/
35
+ wheels/
36
+ share/python-wheels/
37
+ *.egg-info/
38
+ .installed.cfg
39
+ *.egg
40
+ MANIFEST
41
+
42
+ # PyInstaller
43
+ # Usually these files are written by a python script from a template
44
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
45
+ *.manifest
46
+ *.spec
47
+
48
+ # Installer logs
49
+ pip-log.txt
50
+ pip-delete-this-directory.txt
51
+
52
+ # Unit test / coverage reports
53
+ htmlcov/
54
+ .tox/
55
+ .nox/
56
+ .coverage
57
+ .coverage.*
58
+ .cache
59
+ nosetests.xml
60
+ coverage.xml
61
+ *.cover
62
+ *.py,cover
63
+ .hypothesis/
64
+ .pytest_cache/
65
+ cover/
66
+
67
+ # Translations
68
+ *.mo
69
+ *.pot
70
+
71
+ # Django stuff:
72
+ *.log
73
+ local_settings.py
74
+ db.sqlite3
75
+ db.sqlite3-journal
76
+
77
+ # Flask stuff:
78
+ instance/
79
+ .webassets-cache
80
+
81
+ # Scrapy stuff:
82
+ .scrapy
83
+
84
+ # MkDocs documentation
85
+ docs/site/
86
+
87
+ # PyBuilder
88
+ .pybuilder/
89
+ target/
90
+
91
+ # Jupyter Notebook
92
+ .ipynb_checkpoints
93
+
94
+ # IPython
95
+ profile_default/
96
+ ipython_config.py
97
+
98
+ # pyenv
99
+ # For a library or package, you might want to ignore these files since the code is
100
+ # intended to run in multiple environments; otherwise, check them in:
101
+ # .python-version
102
+
103
+ # pipenv
104
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
105
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
106
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
107
+ # install all needed dependencies.
108
+ #Pipfile.lock
109
+
110
+ # poetry
111
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
112
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
113
+ # commonly ignored for libraries.
114
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
115
+ #poetry.lock
116
+
117
+ # pdm
118
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
119
+ #pdm.lock
120
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
121
+ # in version control.
122
+ # https://pdm.fming.dev/#use-with-ide
123
+ .pdm.toml
124
+
125
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
126
+ __pypackages__/
127
+
128
+ # Celery stuff
129
+ celerybeat-schedule
130
+ celerybeat.pid
131
+
132
+ # SageMath parsed files
133
+ *.sage.py
134
+
135
+ # Environments
136
+ .env
137
+ .venv
138
+ .uv-cache/
139
+ env/
140
+ venv/
141
+ ENV/
142
+ env.bak/
143
+ venv.bak/
144
+
145
+ # vs code
146
+ .vscode
147
+
148
+ # Spyder project settings
149
+ .spyderproject
150
+ .spyproject
151
+
152
+ # Rope project settings
153
+ .ropeproject
154
+
155
+ # mkdocs documentation
156
+ /site
157
+
158
+ # mypy
159
+ .mypy_cache/
160
+ .dmypy.json
161
+ dmypy.json
162
+
163
+ # Pyre type checker
164
+ .pyre/
165
+
166
+ # pytype static type analyzer
167
+ .pytype/
168
+
169
+ # Cython debug symbols
170
+ cython_debug/
171
+
172
+ # PyCharm
173
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
174
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
175
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
176
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
177
+ #.idea/
@@ -0,0 +1,74 @@
1
+ History
2
+ -------
3
+
4
+ 1.0.0
5
+ ~~~~~
6
+
7
+ Packaging
8
+ ^^^^^^^^^
9
+ * First release of the ``streptocad`` library on PyPI (``pip install streptocad``).
10
+ * Packaged the ``streptocad`` toolbox with a hatchling build backend; the Dash web
11
+ app, notebooks and test fixtures stay in the repository and are not distributed.
12
+ * Declared ``nbformat`` and ``nbconvert`` as runtime dependencies, since
13
+ ``streptocad.utils`` imports them at module level.
14
+ * Relaxed dependency pins to compatible ranges for library use, so security
15
+ updates can be picked up with ``uv lock --upgrade``. ``uv.lock`` still records
16
+ exact versions, and ``requirements.txt`` is generated from it for the Docker image.
17
+
18
+ Corrected primer melting temperatures (changes designed primers)
19
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
20
+ * **Designed primers may differ from those produced by earlier versions, usually by
21
+ one or two bases.** This corrects real errors and is not a change of preference.
22
+ There are two independent causes, described below.
23
+
24
+ Primers are now designed with the melting-temperature model they are reported with
25
+ """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
26
+ * Reaction conditions are passed to ``pydna.design.primer_design`` as keyword
27
+ arguments. pydna accepts ``**kwargs`` but never forwards them to the melting
28
+ temperature function, so the selected polymerase and primer concentration were
29
+ silently discarded and design fell back to pydna's generic Taq-buffer defaults,
30
+ while the reported melting temperatures came from NEB. Design and reporting were
31
+ therefore using two different thermodynamic models.
32
+ * ``streptocad.cloning.pcr_simulation.make_amplicons`` additionally passed the
33
+ argument as ``tm_function`` rather than ``tm_func``, so it was absorbed by
34
+ ``**kwargs`` and the NEB model was never used there at all.
35
+ * All design call sites now bind the conditions into the Tm function through
36
+ :func:`streptocad.primers.tm.neb_tm_function`, and pass ``estimate_function`` so a
37
+ fast local estimate seeds the search. Results are identical to querying NEB at
38
+ every step while making far fewer API calls, and responses are cached.
39
+ * Effect on the workflow-1 regulator set, scoring each designed primer with the NEB
40
+ model it is reported with: mean deviation from the requested melting temperature
41
+ falls from 1.69 C to 1.00 C, primers within 1 C of target rise from 14/36 to 26/36,
42
+ and the most common value moves from 58 C to the requested 60 C. The previous
43
+ design sat systematically below target; that bias is gone.
44
+ * The Gibson repair-template primers were affected more severely. There the discarded
45
+ conditions left design running against NEB's ``q5-0`` default, which reads several
46
+ degrees higher than Phusion GC, so three of the four primers never grew past the
47
+ 13 nt ``min_primer_length`` floor. For the SCO5892 deletion they came out near 50 C
48
+ against a requested 60 C; they now read 60-61 C. Anyone who ordered Gibson repair
49
+ primers from an earlier version may want to re-check them, since a primer designed
50
+ for a 60 C anneal that actually melts at 50 C can underperform at the bench.
51
+ * ``streptocad.primers.tm.neb_tm_function`` raises a clear error when the NEB API
52
+ returns no result, instead of yielding ``None`` and failing later as a ``TypeError``
53
+ deep inside pydna's search. Note the API rejects primers shorter than 8 nt and any
54
+ product code outside those in ``streptocad.utils.polymerase_dict``.
55
+
56
+ Corrected nearest-neighbour thermodynamic parameters
57
+ """"""""""""""""""""""""""""""""""""""""""""""""""""
58
+ * Biopython 1.82 corrected two entropy values in the SantaLucia & Hicks (2004)
59
+ nearest-neighbour table (``DNA_NN4``): ``TA/AT`` from -20.4 to -21.3 and ``GG/CC``
60
+ from -19.0 to -19.9. The corrected values reproduce the published dG37 for those
61
+ pairs to within 0.02 kcal/mol; the earlier ones are off by about 0.28.
62
+ * StreptoCAD previously required ``biopython==1.80`` (via ``teemi`` 0.3.4), so it
63
+ used the erroneous values. They overestimate primer melting temperatures by
64
+ roughly 2.3 C, which made ``pydna``'s ``primer_design`` stop one base short of the
65
+ requested ``target_tm``. Primers designed before this release therefore tend to be
66
+ one base too short and anneal about 2 C below the temperature that was asked for.
67
+ * Raised the floors to ``biopython>=1.82``, ``teemi>=1.0.5`` and ``pydna>=5.5``.
68
+ * Updated the primer fixtures in ``tests/`` accordingly. Each expected primer was
69
+ checked to be the candidate whose Tm lies closest to the requested ``target_tm``
70
+ among its neighbouring lengths, rather than simply re-recording the new output.
71
+ * Users reproducing designs from before this release, including those in the
72
+ StreptoCAD paper, should expect slightly different primer sequences. The earlier
73
+ sequences remain valid primers; they were simply designed against a Tm that was
74
+ overestimated.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024, Technical University of Denmark (DTU)
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,224 @@
1
+ Metadata-Version: 2.5
2
+ Name: streptocad
3
+ Version: 1.0.0
4
+ Summary: An open-source software toolbox supporting genome engineering workflows in streptomycetes
5
+ Project-URL: Homepage, https://streptocad.bioengineering.dtu.dk
6
+ Project-URL: Repository, https://github.com/hiyama341/streptocad
7
+ Project-URL: Issues, https://github.com/hiyama341/streptocad/issues
8
+ Project-URL: Paper, https://www.biorxiv.org/content/10.1101/2024.12.19.629370v1
9
+ Author: Technical University of Denmark, DTU
10
+ License-Expression: MIT
11
+ License-File: LICENSE
12
+ Keywords: crispr,genome engineering,primer design,streptomyces,synthetic biology
13
+ Classifier: Development Status :: 5 - Production/Stable
14
+ Classifier: Intended Audience :: Science/Research
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
19
+ Requires-Python: <3.13,>=3.11
20
+ Requires-Dist: biopython<2,>=1.82
21
+ Requires-Dist: dnachisel<4,>=3.2.11
22
+ Requires-Dist: nbconvert>=7.17.1
23
+ Requires-Dist: nbformat>=5.10
24
+ Requires-Dist: numpy<3,>=2.1.1
25
+ Requires-Dist: pandas<3,>=2.2.2
26
+ Requires-Dist: primer3-py<3,>=2.0.3
27
+ Requires-Dist: pydna<6,>=5.5.0
28
+ Requires-Dist: python-codon-tables>=0.1.12
29
+ Requires-Dist: requests<3,>=2.33.0
30
+ Requires-Dist: scipy<2,>=1.14.1
31
+ Requires-Dist: teemi<2,>=1.0.5
32
+ Description-Content-Type: text/markdown
33
+
34
+ <img src="https://raw.githubusercontent.com/hiyama341/streptocad/main/web_app/assets/StreptoCAD_logo%20Medium.jpeg" alt="StreptoCAD" width="200">
35
+
36
+ # Automate your Streptomyces genome engineering workflows 🚀
37
+
38
+ ![Build Status](https://img.shields.io/badge/build-passing-brightgreen.svg)
39
+ ![Tests Passing](https://github.com/hiyama341/streptocad/actions/workflows/ci.yml/badge.svg)
40
+ ![Deploy AppRunner Container](https://github.com/hiyama341/streptocad/actions/workflows/deploy_apprunner_container.yml/badge.svg)
41
+ ![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)
42
+ [![PyPI](https://img.shields.io/pypi/v/streptocad.svg)](https://pypi.org/project/streptocad/)
43
+ [![code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
44
+
45
+ **StreptoCAD** is an open-source software toolbox designed to automate and streamline genome engineering in Streptomyces. This tool supports various CRISPR-based techniques and gene overexpression methods, simplifying the genetic engineering process.
46
+
47
+ You can find it here: [streptocad.bioengineering.dtu.dk](https://streptocad.bioengineering.dtu.dk)
48
+
49
+ ## Features
50
+
51
+ - **Automated Primer and sgRNA Design:** Automatically generates necessary DNA primers and sgRNA sequences for your target genes.
52
+ - **Plasmid Assembly Simulation:** Simulates plasmid assemblies and the resulting genomic modifications.
53
+ - **Six Design Workflows:** Supports workflows including overexpression library construction, base-editing, and in-frame deletions using CRISPR-Cas9 and CRISPR-Cas3 systems.
54
+ - **FAIR Compliance:** Ensures data is Findable, Accessible, Interoperable, and Reusable, promoting reproducibility and ease of data management.
55
+ - **User-Friendly:** Suitable for both experienced users and beginners, facilitating collaboration and standardized workflows.
56
+
57
+ ## Why StreptoCAD?
58
+
59
+ Streptomyces is a prolific source of novel bioactive molecules, but current genetic engineering methods are inefficient and time-consuming. StreptoCAD addresses these challenges by automating the design process, reducing errors, and speeding up the development of genetically modified strains. This tool transforms complex genetic engineering tasks into straightforward, reproducible processes, enabling faster scientific advancements and discovery of new natural products.
60
+
61
+ For more details and an in-depth discussion of our approach, check out our [bioXiv paper](https://www.biorxiv.org/content/10.1101/2024.12.19.629370v1.full).
62
+
63
+ ## Workflows
64
+
65
+ <img src="https://raw.githubusercontent.com/hiyama341/streptocad/main/web_app/assets/intro_fig.png" alt="StreptoCAD" width="600">
66
+
67
+ StreptoCAD offers six distinct workflows for various genetic engineering tasks:
68
+
69
+ 1. **[Overexpression Plasmid Library Construction](https://github.com/hiyama341/streptocad/blob/main/notebooks/app_workflows/W1_overexpression_workflow.ipynb):**
70
+
71
+ - Can be used to overexpress target proteins - we experimentally validated this by overexpressing regulators.
72
+
73
+ 2. **[Single CRISPR-BEST Plasmid Generation](https://github.com/hiyama341/streptocad/blob/main/notebooks/app_workflows/W2_CRISPR-BEST-single.ipynb):**
74
+
75
+ - Base editing system in the genome of Streptomyces using single sgRNA for targeting.
76
+
77
+ 3. **[Multiplexed CRISPR-BEST Plasmid Generation](https://github.com/hiyama341/streptocad/blob/main/notebooks/app_workflows/W3_multiplexed_CRISPR-BEST.ipynb):**
78
+
79
+ - Multiplexed base-editing in the genome for high-throughput genetic studies.
80
+
81
+ 4. **[CRISPRi Plasmid Generation](https://github.com/hiyama341/streptocad/blob/main/notebooks/app_workflows/W4_CRISPRi.ipynb):**
82
+
83
+ - Uses transcriptional interference to reversibly inactivate genes for functional studies.
84
+
85
+ 5. **[CRISPR-Cas9](https://github.com/hiyama341/streptocad/blob/main/notebooks/app_workflows/W5_CRISPR-cas9-inframe-deletion_random_sized_deletion.ipynb):**
86
+
87
+ - Can be used for random-sized or in-frame deletions with Cas9
88
+
89
+ 6. **[CRISPR-Cas3](https://github.com/hiyama341/streptocad/blob/main/notebooks/app_workflows/W6_CRISPR-cas3-inframe-deletion_random_sized_deletion.ipynb):**
90
+ - Can be used for random-sized or in-frame deletions with Cas3
91
+
92
+ ## Experimental Validation
93
+
94
+ StreptoCAD's efficiency and user-friendliness were validated by designing and constructing overexpression strains in Streptomyces Göe40/10 in just eight weeks. This highlights the tool's capability to accelerate genome engineering projects.
95
+
96
+ ## Future Developments
97
+
98
+ Future expansions will include additional genome engineering tools and integration with laboratory robotics systems for end-to-end automation, further enhancing the capabilities and efficiency of StreptoCAD.
99
+
100
+ ## Get Started
101
+
102
+ Visit [streptocad.bioengineering.dtu.dk](https://streptocad.bioengineering.dtu.dk) to try StreptoCAD, access documentation, and join the community of users and contributors working to advance Streptomyces research.
103
+
104
+ ## Use StreptoCAD as a Python library
105
+
106
+ The StreptoCAD toolbox is available on [PyPI](https://pypi.org/project/streptocad/) for Python 3.11 and 3.12:
107
+
108
+ ```bash
109
+ pip install streptocad
110
+ ```
111
+
112
+ The workflows can then be scripted directly, for example:
113
+
114
+ ```python
115
+ from streptocad.sequence_loading.sequence_loading import load_and_process_genome_sequences
116
+
117
+ genome = load_and_process_genome_sequences("my_genome.gbk")[0]
118
+ ```
119
+
120
+ See the [workflow notebooks](https://github.com/hiyama341/streptocad/tree/main/notebooks/app_workflows) for complete examples. The PyPI package contains the library only; to run the web app, follow the steps below.
121
+
122
+ ## Want to run StreptoCAD locally?
123
+
124
+ #### 1. Set up a Conda virtual environment (Why it's smart)
125
+
126
+ Using a Conda virtual environment is a great way to manage dependencies for your project. Conda makes it easy to create and manage isolated environments, ensuring your project’s libraries are kept separate from other projects and system-wide dependencies. This helps avoid compatibility issues and makes it simpler to reproduce your development environment.
127
+
128
+ To create a new Conda environment, run:
129
+
130
+ ```bash
131
+ conda create --name streptocad python=3.11
132
+ ```
133
+
134
+ Replace streptocad with your preferred environment name, and replace 3.11 with the specific version of Python you need.
135
+
136
+ Then activate it:
137
+
138
+ ```bash
139
+ conda activate streptocad
140
+ ```
141
+
142
+ #### 2. Install the requirements
143
+
144
+ Once your Conda environment is active, you can install the required dependencies from requirements.txt. This ensures your environment has all the necessary packages for the project. Use the following command:
145
+
146
+ ```bash
147
+ pip install -r requirements.txt
148
+ ```
149
+
150
+ (Note: Even though you're using Conda, pip is still used to install from requirements.txt.)
151
+
152
+ #### 3. Run the application
153
+
154
+ Finally, to run the StreptoCAD application, execute the following command:
155
+
156
+ ```bash
157
+ python3 application.py
158
+ ```
159
+
160
+ This will launch the application locally, and you're ready to go! Follow the url that your terminal shows.
161
+
162
+ Alternatively, you can try running the workflows as Jupyter notebooks after completing the installation above.
163
+
164
+ ## Running the StreptoCAD App via Docker
165
+
166
+ To run the StreptoCAD application using Docker, follow these steps:
167
+
168
+ ### 1. Build the Docker Image
169
+
170
+ First, build the Docker image from the `Dockerfile` located in the root of the project:
171
+
172
+ ```bash
173
+ docker build -t streptocad .
174
+ ```
175
+
176
+ ### 2. Run the Docker Container
177
+
178
+ Once the image is built, run the container:
179
+
180
+ ```bash
181
+ docker run -d -p 8050:8050 streptocad
182
+ ```
183
+
184
+ This will start the StreptoCAD application, exposing it on port 8050 of your local machine.
185
+
186
+ ### 3. Run the application
187
+
188
+ Finally, to run the StreptoCAD application, execute the following command:
189
+
190
+ ```bash
191
+ python3 application.py
192
+ ```
193
+
194
+ This will launch the application locally, and you're ready to go! Follow the URL that your terminal shows.
195
+
196
+ ## Making Your Own Workflow
197
+
198
+ StreptoCAD is designed to be modular and user-extensible. We’ve created a **comprehensive guide** to help you add your own custom workflows to the application. This guide covers:
199
+
200
+ - Creating new frontend components (tabs)
201
+ - Developing backend callback functions
202
+ - Writing tests
203
+ - Integrating your changes into the main app via GitHub
204
+
205
+ You can find the step-by-step guide here:
206
+
207
+ 👉 [**Integrating New Workflows into StreptoCAD**](https://github.com/hiyama341/streptocad/blob/main/web_app/how_to_make_your_own_workflows.md)
208
+
209
+ Whether you want to adapt StreptoCAD for your research needs or contribute to the community, this documentation walks you through every stage of the process, including code examples and best practices.
210
+
211
+ **If you need help:**
212
+
213
+ - Check out the additional resources and documentation in the [docs folder](https://github.com/hiyama341/streptocad/tree/main/docs).
214
+ - Open an issue on GitHub or contact the development team.
215
+
216
+ We encourage all users to contribute and help make StreptoCAD even more powerful and versatile!
217
+
218
+ ## License
219
+
220
+ StreptoCAD is open-source and licensed under the MIT License.
221
+
222
+ ## Contact
223
+
224
+ For questions or contributions, please contact [luclev@dtu.dk](mailto:luclev@dtu.dk).