opencloning 0.4.2__tar.gz → 0.4.3__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.
- {opencloning-0.4.2 → opencloning-0.4.3}/PKG-INFO +4 -2
- {opencloning-0.4.2 → opencloning-0.4.3}/pyproject.toml +1 -1
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/batch_cloning/EBIC/example.py +16 -7
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/batch_cloning/pombe/pombe_clone.py +6 -6
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/endpoints/assembly.py +5 -1
- {opencloning-0.4.2 → opencloning-0.4.3}/LICENSE +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/README.md +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/__init__.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/_version.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/api_config_utils.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/app_settings.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/batch_cloning/EBIC/__init__.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/batch_cloning/EBIC/barcode.gb +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/batch_cloning/EBIC/common_plasmid.gb +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/batch_cloning/EBIC/primer_design_settings.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/batch_cloning/__init__.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/batch_cloning/index.html +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/batch_cloning/pombe/__init__.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/batch_cloning/pombe/index.html +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/batch_cloning/pombe/pombe_gather.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/batch_cloning/pombe/pombe_get_primers.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/batch_cloning/pombe/pombe_summary.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/batch_cloning/ziqiang_et_al2024/__init__.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/batch_cloning/ziqiang_et_al2024/index.html +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/batch_cloning/ziqiang_et_al2024/ziqiang_et_al2024.json +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/bug_fixing/README.md +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/bug_fixing/__init__.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/bug_fixing/backend_v0_3.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/cre_lox.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/dna_functions.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/dna_utils.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/ebic/__init__.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/ebic/primer_design.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/ebic/primer_design_settings.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/endpoints/annotation.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/endpoints/external_import.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/endpoints/no_assembly.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/endpoints/no_input.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/endpoints/other.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/endpoints/primer_design.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/gateway.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/get_router.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/http_client.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/main.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/ncbi_requests.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/primer_design.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/pydantic_models.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/request_examples.py +0 -0
- {opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/utils.py +0 -0
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: opencloning
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.3
|
|
4
4
|
Summary: Backend of OpenCloning, a web application to generate molecular cloning strategies in json format, and share them with others.
|
|
5
5
|
License: MIT
|
|
6
|
+
License-File: LICENSE
|
|
6
7
|
Author: Manuel Lera-Ramirez
|
|
7
8
|
Author-email: manulera14@gmail.com
|
|
8
9
|
Requires-Python: >=3.11,<4.0
|
|
@@ -11,6 +12,7 @@ Classifier: Programming Language :: Python :: 3
|
|
|
11
12
|
Classifier: Programming Language :: Python :: 3.11
|
|
12
13
|
Classifier: Programming Language :: Python :: 3.12
|
|
13
14
|
Classifier: Programming Language :: Python :: 3.13
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
14
16
|
Requires-Dist: beautifulsoup4 (>=4.11.1,<5.0.0)
|
|
15
17
|
Requires-Dist: biopython (>=1.85,<2.0)
|
|
16
18
|
Requires-Dist: fastapi
|
|
@@ -8,7 +8,7 @@ authors = ["Manuel Lera-Ramirez <manulera14@gmail.com>"]
|
|
|
8
8
|
description = "Backend of OpenCloning, a web application to generate molecular cloning strategies in json format, and share them with others."
|
|
9
9
|
license = "MIT"
|
|
10
10
|
name = "opencloning"
|
|
11
|
-
version = "0.4.
|
|
11
|
+
version = "0.4.3"
|
|
12
12
|
package-mode = true
|
|
13
13
|
readme = "README.md"
|
|
14
14
|
repository = "https://github.com/manulera/OpenCloning_backend"
|
|
@@ -4,7 +4,7 @@ from primer3 import bindings
|
|
|
4
4
|
import json
|
|
5
5
|
from fastapi import UploadFile, Response
|
|
6
6
|
|
|
7
|
-
from
|
|
7
|
+
from opencloning.pydantic_models import (
|
|
8
8
|
GenomeCoordinatesSource,
|
|
9
9
|
TextFileSequence,
|
|
10
10
|
PrimerModel,
|
|
@@ -13,10 +13,10 @@ from ...pydantic_models import (
|
|
|
13
13
|
BaseCloningStrategy,
|
|
14
14
|
HomologousRecombinationSource,
|
|
15
15
|
)
|
|
16
|
-
from .primer_design_settings import amanda_settings
|
|
17
|
-
from
|
|
18
|
-
from
|
|
19
|
-
from
|
|
16
|
+
from opencloning.batch_cloning.EBIC.primer_design_settings import amanda_settings
|
|
17
|
+
from opencloning.endpoints.external_import import genome_coordinates, read_from_file
|
|
18
|
+
from opencloning.endpoints.assembly import pcr, restriction_and_ligation, homologous_recombination
|
|
19
|
+
from opencloning.dna_functions import read_dsrecord_from_json
|
|
20
20
|
|
|
21
21
|
# Settings for design
|
|
22
22
|
padding = 1000
|
|
@@ -123,7 +123,9 @@ async def main():
|
|
|
123
123
|
|
|
124
124
|
with open(os.path.join(os.path.dirname(__file__), 'barcode.gb'), 'rb') as f:
|
|
125
125
|
dummy_resp = Response()
|
|
126
|
-
resp = await read_from_file(
|
|
126
|
+
resp = await read_from_file(
|
|
127
|
+
dummy_resp, UploadFile(file=f, filename='barcode.gb'), None, None, True, 'barcode', None, None
|
|
128
|
+
)
|
|
127
129
|
|
|
128
130
|
barcode_source = resp['sources'][0]
|
|
129
131
|
barcode_seq: TextFileSequence = resp['sequences'][0]
|
|
@@ -132,7 +134,14 @@ async def main():
|
|
|
132
134
|
with open(os.path.join(os.path.dirname(__file__), 'common_plasmid.gb'), 'rb') as f:
|
|
133
135
|
dummy_resp = Response()
|
|
134
136
|
resp = await read_from_file(
|
|
135
|
-
dummy_resp,
|
|
137
|
+
dummy_resp,
|
|
138
|
+
UploadFile(file=f, filename='common_plasmid.gb'),
|
|
139
|
+
None,
|
|
140
|
+
None,
|
|
141
|
+
True,
|
|
142
|
+
'common_plasmid',
|
|
143
|
+
None,
|
|
144
|
+
None,
|
|
136
145
|
)
|
|
137
146
|
|
|
138
147
|
common_plasmid_source = resp['sources'][0]
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import os
|
|
2
|
-
from
|
|
3
|
-
from
|
|
4
|
-
from
|
|
2
|
+
from opencloning.endpoints.external_import import genome_coordinates, get_from_repository_id_addgene, read_from_file
|
|
3
|
+
from opencloning.endpoints.assembly import pcr, homologous_recombination
|
|
4
|
+
from opencloning.pydantic_models import (
|
|
5
5
|
GenomeCoordinatesSource,
|
|
6
6
|
TextFileSequence,
|
|
7
7
|
AddgeneIdSource,
|
|
@@ -12,7 +12,7 @@ from ...pydantic_models import (
|
|
|
12
12
|
UploadedFileSource,
|
|
13
13
|
)
|
|
14
14
|
|
|
15
|
-
from
|
|
15
|
+
from opencloning.ncbi_requests import get_annotations_from_query
|
|
16
16
|
import asyncio
|
|
17
17
|
import json
|
|
18
18
|
from Bio import SeqIO
|
|
@@ -78,9 +78,9 @@ async def main(
|
|
|
78
78
|
# Get plasmid sequence =================s================================================================
|
|
79
79
|
if not isinstance(plasmid, str):
|
|
80
80
|
if plasmid.filename.endswith('.fa') or plasmid.filename.endswith('.fasta'):
|
|
81
|
-
resp = await read_from_file(plasmid, None, None, True, None)
|
|
81
|
+
resp = await read_from_file(plasmid, None, None, True, None, None, None)
|
|
82
82
|
else:
|
|
83
|
-
resp = await read_from_file(plasmid, None, None, None, None)
|
|
83
|
+
resp = await read_from_file(plasmid, None, None, None, None, None, None)
|
|
84
84
|
# Verify that plasmid is circular
|
|
85
85
|
if not pydna_parse(resp['sequences'][0].file_content)[0].circular:
|
|
86
86
|
raise ValueError('Plasmid is not circular')
|
|
@@ -265,12 +265,16 @@ async def pcr(
|
|
|
265
265
|
source: PCRSource,
|
|
266
266
|
sequences: Annotated[list[TextFileSequence], Field(min_length=1, max_length=1)],
|
|
267
267
|
primers: Annotated[list[PrimerModel], Field(min_length=1, max_length=2)],
|
|
268
|
-
minimal_annealing: int = Query(
|
|
268
|
+
minimal_annealing: int = Query(
|
|
269
|
+
14,
|
|
270
|
+
description='The minimal amount of bases that must match between the primer and the sequence, excluding mismatches.',
|
|
271
|
+
),
|
|
269
272
|
allowed_mismatches: int = Query(0, description='The number of mismatches allowed'),
|
|
270
273
|
):
|
|
271
274
|
if len(primers) != len(sequences) * 2:
|
|
272
275
|
raise HTTPException(400, 'The number of primers should be twice the number of sequences.')
|
|
273
276
|
|
|
277
|
+
minimal_annealing = minimal_annealing + allowed_mismatches
|
|
274
278
|
pydna_sequences = [read_dsrecord_from_json(s) for s in sequences]
|
|
275
279
|
pydna_primers = [PydnaPrimer(p.sequence, id=str(p.id), name=p.name) for p in primers]
|
|
276
280
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/batch_cloning/EBIC/common_plasmid.gb
RENAMED
|
File without changes
|
{opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/batch_cloning/EBIC/primer_design_settings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/batch_cloning/pombe/pombe_get_primers.py
RENAMED
|
File without changes
|
{opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/batch_cloning/pombe/pombe_summary.py
RENAMED
|
File without changes
|
{opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/batch_cloning/ziqiang_et_al2024/__init__.py
RENAMED
|
File without changes
|
{opencloning-0.4.2 → opencloning-0.4.3}/src/opencloning/batch_cloning/ziqiang_et_al2024/index.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|