RNApolis 0.3.14__py3-none-any.whl → 0.3.16__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- {RNApolis-0.3.14.dist-info → RNApolis-0.3.16.dist-info}/METADATA +1 -1
- {RNApolis-0.3.14.dist-info → RNApolis-0.3.16.dist-info}/RECORD +8 -8
- rnapolis/common.py +22 -18
- rnapolis/parser.py +12 -0
- {RNApolis-0.3.14.dist-info → RNApolis-0.3.16.dist-info}/LICENSE +0 -0
- {RNApolis-0.3.14.dist-info → RNApolis-0.3.16.dist-info}/WHEEL +0 -0
- {RNApolis-0.3.14.dist-info → RNApolis-0.3.16.dist-info}/entry_points.txt +0 -0
- {RNApolis-0.3.14.dist-info → RNApolis-0.3.16.dist-info}/top_level.txt +0 -0
@@ -1,17 +1,17 @@
|
|
1
1
|
rnapolis/annotator.py,sha256=XnjFBeu3P_2UMdkD4Ao7m7K6JfeqYa-13xRzghrLvt8,22086
|
2
2
|
rnapolis/clashfinder.py,sha256=jD3s_UovygWi01NUbQNeAeRRFkARTSRraLXUV43UbAA,8514
|
3
|
-
rnapolis/common.py,sha256=
|
3
|
+
rnapolis/common.py,sha256=tbmKV64nLClmzNN0HyKnvWA0-5aSyf4x8CGpBjpIJ4M,30290
|
4
4
|
rnapolis/metareader.py,sha256=4qtMKRvww2sUStLeV8WVrLEt-ScydHUv4Gxx96tnf-M,1683
|
5
5
|
rnapolis/molecule_filter.py,sha256=NhjuqdCRnXgPefWZPeTq77tifmnAzamQtA0ODqPPG9k,6918
|
6
6
|
rnapolis/motif_extractor.py,sha256=duHvpi9Ulcny9K60E6VBpz5RpJZw-KdTB4_Ph0iP478,774
|
7
|
-
rnapolis/parser.py,sha256=
|
7
|
+
rnapolis/parser.py,sha256=6xEeQghil0eXIzi0bNUkebknfqIxx9EfOfT9q33eN4A,12666
|
8
8
|
rnapolis/rfam_folder.py,sha256=3rgXEJR16uPFy_BOo8qkdClOAOQDVOkidnLE-yoRbeI,11112
|
9
9
|
rnapolis/tertiary.py,sha256=VuATTN2SD7lBL9iUgT-doDwuEYsLodgV2u-SwQsyQcU,19658
|
10
10
|
rnapolis/transformer.py,sha256=V9nOQvdq4-p7yUWo0vQg0CDQMpmyxz9t4TMSRVEKHnw,1817
|
11
11
|
rnapolis/util.py,sha256=IdquFO3PV1_KDqodjupzm0Rqvgy0CeSzxGHaGEHYXVU,543
|
12
|
-
RNApolis-0.3.
|
13
|
-
RNApolis-0.3.
|
14
|
-
RNApolis-0.3.
|
15
|
-
RNApolis-0.3.
|
16
|
-
RNApolis-0.3.
|
17
|
-
RNApolis-0.3.
|
12
|
+
RNApolis-0.3.16.dist-info/LICENSE,sha256=ZGRu12MzCgbYA-Lt8MyBlmjvPZh7xfiD5u5wBx0enq4,1066
|
13
|
+
RNApolis-0.3.16.dist-info/METADATA,sha256=k4D9WCUq94R1lGhWmYJqTjfh9ww8RPRjxg_IOHiPEcg,54301
|
14
|
+
RNApolis-0.3.16.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
15
|
+
RNApolis-0.3.16.dist-info/entry_points.txt,sha256=foN2Pn5e-OzEz0fFmNoX6PnFSZFQntOlY8LbognP5F0,308
|
16
|
+
RNApolis-0.3.16.dist-info/top_level.txt,sha256=LcO18koxZcWoJ21KDRRRo_tyIbmXL5z61dPitZpy8yc,9
|
17
|
+
RNApolis-0.3.16.dist-info/RECORD,,
|
rnapolis/common.py
CHANGED
@@ -900,33 +900,37 @@ class BpSeq:
|
|
900
900
|
else:
|
901
901
|
stack.pop()
|
902
902
|
|
903
|
-
#
|
904
|
-
|
905
|
-
|
906
|
-
|
907
|
-
solutions = set()
|
903
|
+
# find unique orders for each component
|
904
|
+
unique = []
|
905
|
+
for component in components:
|
906
|
+
unique.append(set())
|
908
907
|
|
909
|
-
|
910
|
-
|
908
|
+
for permutation in itertools.permutations(component):
|
909
|
+
orders = {region: 0 for region in component}
|
911
910
|
|
912
|
-
|
913
|
-
|
914
|
-
region_i = component[i]
|
915
|
-
available = [True for _ in range(len(graph))]
|
911
|
+
for i in range(1, len(permutation)):
|
912
|
+
available = [True for _ in range(len(component))]
|
916
913
|
|
917
914
|
for j in range(i):
|
918
|
-
|
919
|
-
|
920
|
-
if region_j in graph[region_i]:
|
921
|
-
available[orders[region_j]] = False
|
915
|
+
if permutation[j] in graph[permutation[i]]:
|
916
|
+
available[orders[permutation[j]]] = False
|
922
917
|
|
923
918
|
order = next(
|
924
|
-
filter(lambda
|
919
|
+
filter(lambda k: available[k] is True, range(len(available)))
|
925
920
|
)
|
926
|
-
orders[
|
921
|
+
orders[permutation[i]] = order
|
922
|
+
|
923
|
+
unique[-1].add(frozenset(orders.items()))
|
924
|
+
|
925
|
+
# generate all possible dot-brackets
|
926
|
+
solutions = set()
|
927
|
+
for assignment in itertools.product(*unique):
|
928
|
+
orders = {region: 0 for region in range(len(regions))}
|
927
929
|
|
928
|
-
|
930
|
+
for order in assignment:
|
931
|
+
orders.update(order)
|
929
932
|
|
933
|
+
solutions.add(self.__make_dot_bracket(regions, orders))
|
930
934
|
return list(solutions)
|
931
935
|
|
932
936
|
|
rnapolis/parser.py
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
import logging
|
1
2
|
from typing import IO, Dict, List, Optional, Tuple, Union
|
2
3
|
|
3
4
|
from mmcif.io.IoAdapterPy import IoAdapterPy
|
@@ -5,6 +6,9 @@ from mmcif.io.IoAdapterPy import IoAdapterPy
|
|
5
6
|
from rnapolis.common import ResidueAuth, ResidueLabel
|
6
7
|
from rnapolis.tertiary import BASE_ATOMS, Atom, Residue3D, Structure3D
|
7
8
|
|
9
|
+
logging.basicConfig(level=logging.INFO)
|
10
|
+
logger = logging.getLogger(__name__)
|
11
|
+
|
8
12
|
|
9
13
|
def read_3d_structure(
|
10
14
|
cif_or_pdb: IO[str], model: Optional[int] = None, nucleic_acid_only: bool = False
|
@@ -104,6 +108,14 @@ def parse_cif(
|
|
104
108
|
auth_residue_name,
|
105
109
|
)
|
106
110
|
|
111
|
+
if label is None and auth is None:
|
112
|
+
# this should not happen in a valid mmCIF file
|
113
|
+
# skipping the line
|
114
|
+
logger.debug(
|
115
|
+
f"Cannot parse an atom line without chain name, residue number, and residue name: {row}"
|
116
|
+
)
|
117
|
+
continue
|
118
|
+
|
107
119
|
model = int(row_dict.get("pdbx_PDB_model_num", "1"))
|
108
120
|
atom_name = row_dict["label_atom_id"]
|
109
121
|
x = float(row_dict["Cartn_x"])
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|