Louis BECQUEY

Fixes + using esl-alimerge again


Former-commit-id: 397da68d
...@@ -71,11 +71,6 @@ sqlite3.enable_callback_tracebacks(True) ...@@ -71,11 +71,6 @@ sqlite3.enable_callback_tracebacks(True)
71 sqlite3.register_adapter(np.int64, lambda val: int(val)) # Tell Sqlite what to do with <class numpy.int64> objects ---> convert to int 71 sqlite3.register_adapter(np.int64, lambda val: int(val)) # Tell Sqlite what to do with <class numpy.int64> objects ---> convert to int
72 sqlite3.register_adapter(np.float64, lambda val: float(val)) # Tell Sqlite what to do with <class numpy.float64> objects ---> convert to float 72 sqlite3.register_adapter(np.float64, lambda val: float(val)) # Tell Sqlite what to do with <class numpy.float64> objects ---> convert to float
73 73
74 -# m = Manager()
75 -# running_stats = m.list()
76 -# running_stats.append(0) # n_launched
77 -# running_stats.append(0) # n_finished
78 -# running_stats.append(0) # n_skipped
79 n_launched = Value('i', 0) 74 n_launched = Value('i', 0)
80 n_finished = Value('i', 0) 75 n_finished = Value('i', 0)
81 n_skipped = Value('i', 0) 76 n_skipped = Value('i', 0)
...@@ -635,12 +630,24 @@ class Chain: ...@@ -635,12 +630,24 @@ class Chain:
635 if nt2 in res_ids: 630 if nt2 in res_ids:
636 interacts[nt2_idx] += 1 631 interacts[nt2_idx] += 1
637 if paired[nt2_idx] == "": 632 if paired[nt2_idx] == "":
638 - pair_type_LW[nt2_idx] = lw_pair[0] + lw_pair[2] + lw_pair[1] 633 + if lw_pair != "--":
639 - pair_type_DSSR[nt2_idx] = dssr_pair[0] + dssr_pair[3] + dssr_pair[2] + dssr_pair[1] 634 + pair_type_LW[nt2_idx] = lw_pair[0] + lw_pair[2] + lw_pair[1]
635 + else:
636 + pair_type_LW[nt2_idx] = "--"
637 + if dssr_pair != "--":
638 + pair_type_DSSR[nt2_idx] = dssr_pair[0] + dssr_pair[3] + dssr_pair[2] + dssr_pair[1]
639 + else:
640 + pair_type_DSSR[nt2_idx] = "--"
640 paired[nt2_idx] = str(nt1_idx + 1) 641 paired[nt2_idx] = str(nt1_idx + 1)
641 else: 642 else:
642 - pair_type_LW[nt2_idx] += ',' + lw_pair[0] + lw_pair[2] + lw_pair[1] 643 + if lw_pair != "--":
643 - pair_type_DSSR[nt2_idx] += ',' + dssr_pair[0] + dssr_pair[3] + dssr_pair[2] + dssr_pair[1] 644 + pair_type_LW[nt2_idx] += ',' + lw_pair[0] + lw_pair[2] + lw_pair[1]
645 + else:
646 + pair_type_LW[nt2_idx] += ",--"
647 + if dssr_pair != "--":
648 + pair_type_DSSR[nt2_idx] += ',' + dssr_pair[0] + dssr_pair[3] + dssr_pair[2] + dssr_pair[1]
649 + else:
650 + pair_type_DSSR[nt2_idx] += ",--"
644 paired[nt2_idx] += ',' + str(nt1_idx + 1) 651 paired[nt2_idx] += ',' + str(nt1_idx + 1)
645 652
646 # transform nt_id to shorter values 653 # transform nt_id to shorter values
...@@ -1083,7 +1090,7 @@ class Pipeline: ...@@ -1083,7 +1090,7 @@ class Pipeline:
1083 self.REUSE_ALL = False 1090 self.REUSE_ALL = False
1084 self.REDUNDANT = False 1091 self.REDUNDANT = False
1085 self.ALIGNOPTS = None 1092 self.ALIGNOPTS = None
1086 - self.RRNAALIGNOPTS = "--mxsize 8192 --cpu 10 --maxtau 0.1" 1093 + self.RRNAALIGNOPTS = ["--mxsize", "8192", "--cpu", "10", "--maxtau", "0.1"]
1087 self.STATSOPTS = None 1094 self.STATSOPTS = None
1088 self.USESINA = False 1095 self.USESINA = False
1089 self.SELECT_ONLY = None 1096 self.SELECT_ONLY = None
...@@ -1151,6 +1158,7 @@ class Pipeline: ...@@ -1151,6 +1158,7 @@ class Pipeline:
1151 "\n\t\t\t\t need of RAM. Should be a number between 1 and your number of CPUs. Note that portions" 1158 "\n\t\t\t\t need of RAM. Should be a number between 1 and your number of CPUs. Note that portions"
1152 "\n\t\t\t\t of the pipeline already limit themselves to 50% or 70% of that number by default.") 1159 "\n\t\t\t\t of the pipeline already limit themselves to 50% or 70% of that number by default.")
1153 print("--cmalign-opts=…\t\tA string of additional options to pass to cmalign aligner, e.g. \"--nonbanded --mxsize 2048\"") 1160 print("--cmalign-opts=…\t\tA string of additional options to pass to cmalign aligner, e.g. \"--nonbanded --mxsize 2048\"")
1161 + print("--cmalign-rrna-opts=…\tLike cmalign-opts, but applied for rRNA (large families, memory-heavy jobs).")
1154 print("--archive\t\t\tCreate tar.gz archives of the datapoints text files and the alignments," 1162 print("--archive\t\t\tCreate tar.gz archives of the datapoints text files and the alignments,"
1155 "\n\t\t\t\t and update the link to the latest archive. ") 1163 "\n\t\t\t\t and update the link to the latest archive. ")
1156 print("--no-logs\t\t\tDo not save per-chain logs of the numbering modifications.") 1164 print("--no-logs\t\t\tDo not save per-chain logs of the numbering modifications.")
...@@ -1219,7 +1227,7 @@ class Pipeline: ...@@ -1219,7 +1227,7 @@ class Pipeline:
1219 elif opt == "cmalign-opts": 1227 elif opt == "cmalign-opts":
1220 self.ALIGNOPTS = arg 1228 self.ALIGNOPTS = arg
1221 elif opt == "cmalign-rrna-opts": 1229 elif opt == "cmalign-rrna-opts":
1222 - self.RRNAALIGNOPTS = arg 1230 + self.RRNAALIGNOPTS = " ".split(arg)
1223 elif opt == "stats-opts": 1231 elif opt == "stats-opts":
1224 self.STATSOPTS = " ".split(arg) 1232 self.STATSOPTS = " ".split(arg)
1225 elif opt == "--all": 1233 elif opt == "--all":
...@@ -1436,8 +1444,9 @@ class Pipeline: ...@@ -1436,8 +1444,9 @@ class Pipeline:
1436 args=[c, self.EXTRACT_CHAINS, self.KEEP_HETATM, retry, self.SAVELOGS])) 1444 args=[c, self.EXTRACT_CHAINS, self.KEEP_HETATM, retry, self.SAVELOGS]))
1437 try: 1445 try:
1438 results = execute_joblist(joblist) 1446 results = execute_joblist(joblist)
1439 - except: 1447 + except Exception as e:
1440 - print("Exiting", flush=True) 1448 + warn(str(e), error=True)
1449 + print("Exiting", str(e), flush=True)
1441 exit(1) 1450 exit(1)
1442 1451
1443 # If there were newly discovered problems, add this chain to the known issues 1452 # If there were newly discovered problems, add this chain to the known issues
...@@ -1550,7 +1559,7 @@ class Pipeline: ...@@ -1550,7 +1559,7 @@ class Pipeline:
1550 align = AlignIO.read(path_to_seq_data + "realigned/" + r[0] + "++.afa", "fasta") 1559 align = AlignIO.read(path_to_seq_data + "realigned/" + r[0] + "++.afa", "fasta")
1551 nb_3d_chains = len([1 for r in align if '[' in r.id]) 1560 nb_3d_chains = len([1 for r in align if '[' in r.id])
1552 if r[0] in SSU_set: # SSU v138.1 is used 1561 if r[0] in SSU_set: # SSU v138.1 is used
1553 - nb_homologs = 2224740 # source: https://www.arb-silva.de/documentation/release-1381/ 1562 + nb_homologs = 2224740 # source: https://www.arb-silva.de/documentation/release-1381/
1554 nb_total_homol = nb_homologs + nb_3d_chains 1563 nb_total_homol = nb_homologs + nb_3d_chains
1555 elif r[0] in LSU_set: # LSU v138.1 is used 1564 elif r[0] in LSU_set: # LSU v138.1 is used
1556 nb_homologs = 227331 # source: https://www.arb-silva.de/documentation/release-1381/ 1565 nb_homologs = 227331 # source: https://www.arb-silva.de/documentation/release-1381/
...@@ -1794,9 +1803,9 @@ def init_no_tqdm(arg1, arg2, arg3): ...@@ -1794,9 +1803,9 @@ def init_no_tqdm(arg1, arg2, arg3):
1794 The children progress is followed using stdout text logs (notify(), warn(), etc) 1803 The children progress is followed using stdout text logs (notify(), warn(), etc)
1795 """ 1804 """
1796 global n_launched, n_finished, n_skipped 1805 global n_launched, n_finished, n_skipped
1797 - n_launched = arg1 1806 + n_launched = arg1
1798 - n_finished = arg2 1807 + n_finished = arg2
1799 - n_skipped = arg3 1808 + n_skipped = arg3
1800 1809
1801 def warn(message, error=False): 1810 def warn(message, error=False):
1802 """ 1811 """
...@@ -2147,7 +2156,7 @@ def execute_job(j, jobcount): ...@@ -2147,7 +2156,7 @@ def execute_job(j, jobcount):
2147 2156
2148 # increase the counter of running jobs 2157 # increase the counter of running jobs
2149 with n_launched.get_lock(): 2158 with n_launched.get_lock():
2150 - n_launched.value += 1 2159 + n_launched.value += 1
2151 2160
2152 # Monitor this process 2161 # Monitor this process
2153 m = -1 2162 m = -1
...@@ -2208,7 +2217,8 @@ def execute_job(j, jobcount): ...@@ -2208,7 +2217,8 @@ def execute_job(j, jobcount):
2208 m = assistant_future.result() 2217 m = assistant_future.result()
2209 2218
2210 # increase the counter of finished jobs 2219 # increase the counter of finished jobs
2211 - running_stats[1] += 1 2220 + with n_finished.get_lock():
2221 + n_finished.value += 1
2212 2222
2213 # return time and memory statistics, plus the job results 2223 # return time and memory statistics, plus the job results
2214 t = end_time - start_time 2224 t = end_time - start_time
...@@ -2223,9 +2233,12 @@ def execute_joblist(fulljoblist): ...@@ -2223,9 +2233,12 @@ def execute_joblist(fulljoblist):
2223 """ 2233 """
2224 2234
2225 # Reset counters 2235 # Reset counters
2226 - running_stats[0] = 0 # started 2236 + with n_launched.get_lock():
2227 - running_stats[1] = 0 # finished 2237 + n_launched.value = 0
2228 - running_stats[2] = 0 # failed 2238 + with n_skipped.get_lock():
2239 + n_skipped.value = 0
2240 + with n_finished.get_lock():
2241 + n_finished.value = 0
2229 2242
2230 # Sort jobs in a tree structure, first by priority, then by CPU numbers 2243 # Sort jobs in a tree structure, first by priority, then by CPU numbers
2231 jobs = {} 2244 jobs = {}
...@@ -2276,10 +2289,6 @@ def execute_joblist(fulljoblist): ...@@ -2276,10 +2289,6 @@ def execute_joblist(fulljoblist):
2276 j.comp_time = round(r[0], 2) # seconds 2289 j.comp_time = round(r[0], 2) # seconds
2277 j.max_mem = int(r[1]/1000000) # MB 2290 j.max_mem = int(r[1]/1000000) # MB
2278 results.append((j.label, r[2], j.comp_time, j.max_mem)) 2291 results.append((j.label, r[2], j.comp_time, j.max_mem))
2279 -
2280 - # Job is finished
2281 - with n_finished.get_lock():
2282 - n_finished.value += 1
2283 2292
2284 # throw back the money 2293 # throw back the money
2285 return results 2294 return results
...@@ -2672,13 +2681,17 @@ def use_infernal(rfam_acc, alignopts): ...@@ -2672,13 +2681,17 @@ def use_infernal(rfam_acc, alignopts):
2672 with open(path_to_seq_data + f"realigned/{rfam_acc}_new.log", 'w') as o: 2681 with open(path_to_seq_data + f"realigned/{rfam_acc}_new.log", 'w') as o:
2673 p1 = subprocess.run(["cmalign", "--ifile", path_to_seq_data + f"realigned/{rfam_acc}.ins", 2682 p1 = subprocess.run(["cmalign", "--ifile", path_to_seq_data + f"realigned/{rfam_acc}.ins",
2674 "--sfile", path_to_seq_data + f"realigned/{rfam_acc}.tsv", 2683 "--sfile", path_to_seq_data + f"realigned/{rfam_acc}.tsv",
2675 - "-o", path_to_seq_data + f"realigned/{rfam_acc}_new.stk", 2684 + "-o", new_ali_path,
2676 path_to_seq_data + f"realigned/{rfam_acc}.cm", 2685 path_to_seq_data + f"realigned/{rfam_acc}.cm",
2677 path_to_seq_data + f"realigned/{rfam_acc}_new.fa"], 2686 path_to_seq_data + f"realigned/{rfam_acc}_new.fa"],
2678 stdout=o, stderr=subprocess.PIPE) 2687 stdout=o, stderr=subprocess.PIPE)
2679 - if "--mxsize" in p1.stderr.decode("utf-8"): 2688 + align_errors = p1.stderr.decode("utf-8")
2680 - # not enough available RAM to allocate the DP matrix 2689 + if len(align_errors):
2681 - warn(f"Not enough RAM to allocate cmalign DP matrix for family {rfam_acc}. Use --sina or --cmalign-opts.", error=True) 2690 + if "--mxsize" in align_errors:
2691 + # not enough available RAM to allocate the DP matrix
2692 + warn(f"Not enough RAM to allocate cmalign DP matrix for family {rfam_acc}. Use --sina or --cmalign-opts.", error=True)
2693 + else:
2694 + warn(align_errors, error=True)
2682 notify("Aligned new sequences together") 2695 notify("Aligned new sequences together")
2683 2696
2684 # Detect doublons and remove them 2697 # Detect doublons and remove them
...@@ -2710,8 +2723,8 @@ def use_infernal(rfam_acc, alignopts): ...@@ -2710,8 +2723,8 @@ def use_infernal(rfam_acc, alignopts):
2710 os.remove(path_to_seq_data + "realigned/toremove.txt") 2723 os.remove(path_to_seq_data + "realigned/toremove.txt")
2711 2724
2712 # And we merge the two alignments 2725 # And we merge the two alignments
2713 - p2 = subprocess.run(["cmalign", "--merge" "-o", path_to_seq_data + f"realigned/{rfam_acc}_merged.stk", 2726 + p2 = subprocess.run(["esl-alimerge", "-o", path_to_seq_data + f"realigned/{rfam_acc}_merged.stk",
2714 - "--rna", path_to_seq_data + f"realigned/{rfam_acc}.cm", existing_ali_path, new_ali_path], 2727 + "--rna", existing_ali_path, new_ali_path],
2715 stdout=subprocess.DEVNULL, stderr=subprocess.PIPE) 2728 stdout=subprocess.DEVNULL, stderr=subprocess.PIPE)
2716 alignErrors = p1.stderr.decode('utf-8') 2729 alignErrors = p1.stderr.decode('utf-8')
2717 mergeErrors = p2.stderr.decode('utf-8') 2730 mergeErrors = p2.stderr.decode('utf-8')
...@@ -2730,7 +2743,7 @@ def use_infernal(rfam_acc, alignopts): ...@@ -2730,7 +2743,7 @@ def use_infernal(rfam_acc, alignopts):
2730 2743
2731 cmd = ["cmalign"] 2744 cmd = ["cmalign"]
2732 if alignopts is not None: 2745 if alignopts is not None:
2733 - cmd += " ".split(alignopts) 2746 + cmd += alignopts
2734 cmd += ['-o', path_to_seq_data + f"realigned/{rfam_acc}++.stk", 2747 cmd += ['-o', path_to_seq_data + f"realigned/{rfam_acc}++.stk",
2735 "--ifile", path_to_seq_data + f"realigned/{rfam_acc}.ins", 2748 "--ifile", path_to_seq_data + f"realigned/{rfam_acc}.ins",
2736 "--sfile", path_to_seq_data + f"realigned/{rfam_acc}.tsv", 2749 "--sfile", path_to_seq_data + f"realigned/{rfam_acc}.tsv",
...@@ -3166,8 +3179,6 @@ if __name__ == "__main__": ...@@ -3166,8 +3179,6 @@ if __name__ == "__main__":
3166 for c in pp.loaded_chains: 3179 for c in pp.loaded_chains:
3167 work_save(c, homology=False) 3180 work_save(c, homology=False)
3168 print("Completed.") 3181 print("Completed.")
3169 - exit(0)
3170 -
3171 3182
3172 # At this point, structure, chain and nucleotide tables of the database are up to date. 3183 # At this point, structure, chain and nucleotide tables of the database are up to date.
3173 # (Modulo some statistics computed by statistics.py) 3184 # (Modulo some statistics computed by statistics.py)
......
...@@ -35,11 +35,11 @@ nohup bash -c 'time docker run --rm -v /path/to/3D/data/folder:/3D -v /path/to/s ...@@ -35,11 +35,11 @@ nohup bash -c 'time docker run --rm -v /path/to/3D/data/folder:/3D -v /path/to/s
35 # Method 2 : Classical command line installation (Linux only) 35 # Method 2 : Classical command line installation (Linux only)
36 36
37 You need to install the dependencies: 37 You need to install the dependencies:
38 -- DSSR, you need to register to the X3DNA forum [here](http://forum.x3dna.org/site-announcements/download-instructions/) and then download the DSSR binary [on that page](http://forum.x3dna.org/downloads/3dna-download/). Make sure to have the `x3dna-dssr` binary in your $PATH variable so that RNANet.py finds it. 38 +- DSSR 1.9.9 or newer, you need to register to the X3DNA forum [here](http://forum.x3dna.org/site-announcements/download-instructions/) and then download the DSSR binary [on that page](http://forum.x3dna.org/downloads/3dna-download/). Make sure to have the `x3dna-dssr` binary in your $PATH variable so that RNANet.py finds it.
39 -- Infernal, to download at [Eddylab](http://eddylab.org/infernal/), several options are available depending on your preferences. Make sure to have the `cmalign`, `cmfetch`, `cmbuild`, `esl-alimanip`, `esl-alipid` and `esl-reformat` binaries in your $PATH variable, so that RNANet.py can find them. 39 +- Infernal 1.1.4 or newer, to download at [Eddylab](http://eddylab.org/infernal/), several options are available depending on your preferences. Make sure to have the `cmalign`, `cmfetch`, `cmbuild`, `esl-alimanip`, `esl-alimerge`, `esl-alipid` and `esl-reformat` binaries in your $PATH variable, so that RNANet.py can find them.
40 -- SINA, follow [these instructions](https://sina.readthedocs.io/en/latest/install.html) for example. Make sure to have the `sina` binary in your $PATH. 40 +- SINA (if you plan to use it), follow [these instructions](https://sina.readthedocs.io/en/latest/install.html) for example. Make sure to have the `sina` binary in your $PATH.
41 - Sqlite 3, available under the name *sqlite* in every distro's package manager, 41 - Sqlite 3, available under the name *sqlite* in every distro's package manager,
42 -- Python >= 3.8, (Unfortunately, python3.6 is no longer supported, because of changes in the multiprocessing and Threading packages. Untested with Python 3.7.\*) 42 +- Python >= 3.8, (Unfortunately, python3.6 is no longer supported, because of changes in the multiprocessing and Threading packages. Untested with Python 3.7.\*).
43 - The following Python packages: `python3.8 -m pip install biopython matplotlib pandas psutil pymysql requests scipy setproctitle sqlalchemy tqdm`. 43 - The following Python packages: `python3.8 -m pip install biopython matplotlib pandas psutil pymysql requests scipy setproctitle sqlalchemy tqdm`.
44 44
45 Then, run it from the command line, preferably using nohup if your shell will be interrupted: 45 Then, run it from the command line, preferably using nohup if your shell will be interrupted:
......
...@@ -19,3 +19,6 @@ ...@@ -19,3 +19,6 @@
19 * Use and save Infernal alignment bounds and truncation information 19 * Use and save Infernal alignment bounds and truncation information
20 * Save if a chain is a representative in BGSU list 20 * Save if a chain is a representative in BGSU list
21 * Annotate unstructured regions (on a nucleotide basis) 21 * Annotate unstructured regions (on a nucleotide basis)
22 +
23 +## Technical to-do list
24 +* `cmalign --merge` is now deprecated, we use `esl-alimerge` instead. But, esl is a single-core process. We should run the merges of alignements of different families in parallel to save some time [TODO].
......
...@@ -10,16 +10,19 @@ ...@@ -10,16 +10,19 @@
10 import matplotlib.pyplot as plt 10 import matplotlib.pyplot as plt
11 import numpy as np 11 import numpy as np
12 import pandas as pd 12 import pandas as pd
13 -import Bio, json, os, random, setproctitle, sqlite3 13 +import Bio, json, os, random, sqlite3
14 from Bio.PDB.MMCIFParser import MMCIFParser 14 from Bio.PDB.MMCIFParser import MMCIFParser
15 from Bio.PDB.vectors import Vector, calc_angle, calc_dihedral 15 from Bio.PDB.vectors import Vector, calc_angle, calc_dihedral
16 from multiprocessing import Pool, Value 16 from multiprocessing import Pool, Value
17 from pandas.core.common import SettingWithCopyWarning 17 from pandas.core.common import SettingWithCopyWarning
18 +from setproctitle import setproctitle
18 from sklearn.mixture import GaussianMixture 19 from sklearn.mixture import GaussianMixture
19 from tqdm import tqdm 20 from tqdm import tqdm
21 +from RNAnet import trace_unhandled_exceptions
20 22
21 -# number of modes in the parameter distribution, used to know how many laws to use in the GMM. if you do not want to trust this data, 23 +# This dic stores the number laws to use in the GMM to estimate each parameter's distribution.
22 -# you can use the --rescan-nmodes option. GMMs will be trained between 1 and 8 modes and the best model will be kept. 24 +# If you do not want to trust this data, you can use the --rescan-nmodes option.
25 +# GMMs will be trained between 1 and 8 modes and the best model will be kept.
23 modes_data = { 26 modes_data = {
24 # bonded distances, all-atom, common to all. Some are also used for HiRE-RNA. 27 # bonded distances, all-atom, common to all. Some are also used for HiRE-RNA.
25 "C1'-C2'":3, "C2'-C3'":2, "C2'-O2'":2, "C3'-O3'":2, "C4'-C3'":2, "C4'-O4'":2, "C5'-C4'":2, "O3'-P":3, "O4'-C1'":3, "O5'-C5'":3, "P-O5'":3, "P-OP1":2, "P-OP2":2, 28 "C1'-C2'":3, "C2'-C3'":2, "C2'-O2'":2, "C3'-O3'":2, "C4'-C3'":2, "C4'-O4'":2, "C5'-C4'":2, "O3'-P":3, "O4'-C1'":3, "O5'-C5'":3, "P-O5'":3, "P-OP1":2, "P-OP2":2,
...@@ -730,7 +733,7 @@ def measures_aa(name, s, thr_idx): ...@@ -730,7 +733,7 @@ def measures_aa(name, s, thr_idx):
730 l_pyrimidines.append([c1p_n1, n1_c6, c6_c5, c5_c4, c4_n3, n3_c2, c2_o2, c2_n1, c4_n4, c4_o4]) 733 l_pyrimidines.append([c1p_n1, n1_c6, c6_c5, c5_c4, c4_n3, n3_c2, c2_o2, c2_n1, c4_n4, c4_o4])
731 pbar.update(1) 734 pbar.update(1)
732 735
733 - df_comm = pd.DataFrame(l_common, columns=["Residu", "O3'-P", "P-OP1", "P-OP2", "P-O5'", "O5'-C5'", "C5'-C4'", "C4'-O4'", "C4'-C3'", "O4'-C1'", "C1'-C2'", "C2'-O2'", "C2'-C3'", "C3'-O3'"]) 736 + df_comm = pd.DataFrame(l_common, columns=["Residue", "O3'-P", "P-OP1", "P-OP2", "P-O5'", "O5'-C5'", "C5'-C4'", "C4'-O4'", "C4'-C3'", "O4'-C1'", "C1'-C2'", "C2'-O2'", "C2'-C3'", "C3'-O3'"])
734 df_pur = pd.DataFrame(l_purines, columns=["C1'-N9", "N9-C8", "C8-N7", "N7-C5", "C5-C6", "C6-O6", "C6-N6", "C6-N1", "N1-C2", "C2-N2", "C2-N3", "N3-C4", "C4-N9", "C4-C5" ]) 737 df_pur = pd.DataFrame(l_purines, columns=["C1'-N9", "N9-C8", "C8-N7", "N7-C5", "C5-C6", "C6-O6", "C6-N6", "C6-N1", "N1-C2", "C2-N2", "C2-N3", "N3-C4", "C4-N9", "C4-C5" ])
735 df_pyr = pd.DataFrame(l_pyrimidines, columns=["C1'-N1", "N1-C6", "C6-C5", "C5-C4", "C4-N3", "N3-C2", "C2-O2", "C2-N1", "C4-N4", "C4-O4"]) 738 df_pyr = pd.DataFrame(l_pyrimidines, columns=["C1'-N1", "N1-C6", "C6-C5", "C5-C4", "C4-N3", "N3-C2", "C2-O2", "C2-N1", "C4-N4", "C4-O4"])
736 df = pd.concat([df_comm, df_pur, df_pyr], axis = 1) 739 df = pd.concat([df_comm, df_pur, df_pyr], axis = 1)
...@@ -785,9 +788,9 @@ def measures_pyle(name, s, thr_idx): ...@@ -785,9 +788,9 @@ def measures_pyle(name, s, thr_idx):
785 l_dist.append([res.get_resname(), c1p_psuiv, p_c1p, c4p_psuiv, p_c4p]) 788 l_dist.append([res.get_resname(), c1p_psuiv, p_c1p, c4p_psuiv, p_c4p])
786 l_angl.append([res.get_resname(), p_c1p_psuiv, c1p_psuiv_c1psuiv]) 789 l_angl.append([res.get_resname(), p_c1p_psuiv, c1p_psuiv_c1psuiv])
787 790
788 - df = pd.DataFrame(l_dist, columns=["Residu", "C1'-P", "P-C1'", "C4'-P", "P-C4'"]) 791 + df = pd.DataFrame(l_dist, columns=["Residue", "C1'-P", "P-C1'", "C4'-P", "P-C4'"])
789 df.to_csv(runDir + "/results/geometry/Pyle/distances/distances_pyle_" + name + ".csv") 792 df.to_csv(runDir + "/results/geometry/Pyle/distances/distances_pyle_" + name + ".csv")
790 - df = pd.DataFrame(l_angl, columns=["Residu", "P-C1'-P°", "C1'-P°-C1'°"]) 793 + df = pd.DataFrame(l_angl, columns=["Residue", "P-C1'-P°", "C1'-P°-C1'°"])
791 df.to_csv(runDir + "/results/geometry/Pyle/angles/flat_angles_pyle_"+name+".csv") 794 df.to_csv(runDir + "/results/geometry/Pyle/angles/flat_angles_pyle_"+name+".csv")
792 795
793 @trace_unhandled_exceptions 796 @trace_unhandled_exceptions
...@@ -798,11 +801,11 @@ def measures_hrna(name, s, thr_idx): ...@@ -798,11 +801,11 @@ def measures_hrna(name, s, thr_idx):
798 801
799 # do not recompute something already computed 802 # do not recompute something already computed
800 if (os.path.isfile(runDir + '/results/geometry/HiRE-RNA/distances/distances_HiRERNA '+name+'.csv') and 803 if (os.path.isfile(runDir + '/results/geometry/HiRE-RNA/distances/distances_HiRERNA '+name+'.csv') and
801 - os.path.isfile(runDir + '/results/geometry/HiRE-RNA/angles/angles_HiRERNA '+name+'.csv') and 804 + os.path.isfile(runDir + '/results/geometry/HiRE-RNA/angles/angles_HiRERNA '+name+'.csv') and
802 - os.path.isfile(runDir + '/results/geometry/HiRE-RNA/torsions/torsions_HiRERNA '+name+'.csv')): 805 + os.path.isfile(runDir + '/results/geometry/HiRE-RNA/torsions/torsions_HiRERNA '+name+'.csv')):
803 return 806 return
804 807
805 - l_dist=[] 808 + l_dist = []
806 l_angl = [] 809 l_angl = []
807 l_tors = [] 810 l_tors = []
808 last_c4p = [] 811 last_c4p = []
...@@ -845,8 +848,8 @@ def measures_hrna(name, s, thr_idx): ...@@ -845,8 +848,8 @@ def measures_hrna(name, s, thr_idx):
845 c1_c4_psuiv_o5suiv = np.nan 848 c1_c4_psuiv_o5suiv = np.nan
846 849
847 if res.get_resname() not in ['ATP', 'CCC', 'A3P', 'A23', 'GDP', 'RIA', "2BA"] : # several phosphate groups, ignore 850 if res.get_resname() not in ['ATP', 'CCC', 'A3P', 'A23', 'GDP', 'RIA', "2BA"] : # several phosphate groups, ignore
848 - atom_p = [ atom.get_coord() for atom in res if atom.get_name() == "P"] 851 + atom_p = [ atom.get_coord() for atom in res if atom.get_name() == "P"]
849 - atom_o5p= [ atom.get_coord() for atom in res if "O5'" in atom.get_fullname() ] 852 + atom_o5p = [ atom.get_coord() for atom in res if "O5'" in atom.get_fullname() ]
850 atom_c5p = [ atom.get_coord() for atom in res if "C5'" in atom.get_fullname() ] 853 atom_c5p = [ atom.get_coord() for atom in res if "C5'" in atom.get_fullname() ]
851 atom_c4p = [ atom.get_coord() for atom in res if "C4'" in atom.get_fullname() ] 854 atom_c4p = [ atom.get_coord() for atom in res if "C4'" in atom.get_fullname() ]
852 atom_c1p = [ atom.get_coord() for atom in res if "C1'" in atom.get_fullname() ] 855 atom_c1p = [ atom.get_coord() for atom in res if "C1'" in atom.get_fullname() ]
...@@ -854,26 +857,26 @@ def measures_hrna(name, s, thr_idx): ...@@ -854,26 +857,26 @@ def measures_hrna(name, s, thr_idx):
854 atom_b2 = pos_b2(res) # position b2 to be calculated only for those with 2 cycles 857 atom_b2 = pos_b2(res) # position b2 to be calculated only for those with 2 cycles
855 858
856 # Distances. If one of the atoms is empty, the euclidian distance returns NaN. 859 # Distances. If one of the atoms is empty, the euclidian distance returns NaN.
857 - last_c4p_p = get_euclidian_distance(last_c4p, atom_p) 860 + last_c4p_p = get_euclidian_distance(last_c4p, atom_p)
858 - p_o5p = get_euclidian_distance(atom_p, atom_o5p) 861 + p_o5p = get_euclidian_distance(atom_p, atom_o5p)
859 - o5p_c5p = get_euclidian_distance(atom_o5p, atom_c5p) 862 + o5p_c5p = get_euclidian_distance(atom_o5p, atom_c5p)
860 - c5p_c4p = get_euclidian_distance(atom_c5p, atom_c4p) 863 + c5p_c4p = get_euclidian_distance(atom_c5p, atom_c4p)
861 - c4p_c1p = get_euclidian_distance(atom_c4p, atom_c1p) 864 + c4p_c1p = get_euclidian_distance(atom_c4p, atom_c1p)
862 - c1p_b1 = get_euclidian_distance(atom_c1p, atom_b1) 865 + c1p_b1 = get_euclidian_distance(atom_c1p, atom_b1)
863 - b1_b2 = get_euclidian_distance(atom_b1, atom_b2) 866 + b1_b2 = get_euclidian_distance(atom_b1, atom_b2)
864 867
865 # flat angles. Same. 868 # flat angles. Same.
866 - lastc4p_p_o5p = get_flat_angle(last_c4p, atom_p, atom_o5p) 869 + lastc4p_p_o5p = get_flat_angle(last_c4p, atom_p, atom_o5p)
867 - lastc1p_lastc4p_p = get_flat_angle(last_c1p, last_c4p, atom_p) 870 + lastc1p_lastc4p_p = get_flat_angle(last_c1p, last_c4p, atom_p)
868 - lastc5p_lastc4p_p = get_flat_angle(last_c5p, last_c4p, atom_p) 871 + lastc5p_lastc4p_p = get_flat_angle(last_c5p, last_c4p, atom_p)
869 - p_o5p_c5p = get_flat_angle(atom_p, atom_o5p, atom_c5p) 872 + p_o5p_c5p = get_flat_angle(atom_p, atom_o5p, atom_c5p)
870 - o5p_c5p_c4p = get_flat_angle(atom_o5p, atom_c5p, atom_c4p) 873 + o5p_c5p_c4p = get_flat_angle(atom_o5p, atom_c5p, atom_c4p)
871 - c5p_c4p_c1p = get_flat_angle(atom_c5p, atom_c4p, atom_c1p) 874 + c5p_c4p_c1p = get_flat_angle(atom_c5p, atom_c4p, atom_c1p)
872 - c4p_c1p_b1 = get_flat_angle(atom_c4p, atom_c1p, atom_b1) 875 + c4p_c1p_b1 = get_flat_angle(atom_c4p, atom_c1p, atom_b1)
873 - c1p_b1_b2 = get_flat_angle(atom_c1p, atom_b1, atom_b2) 876 + c1p_b1_b2 = get_flat_angle(atom_c1p, atom_b1, atom_b2)
874 877
875 # torsions. Idem. 878 # torsions. Idem.
876 - p_o5_c5_c4 = get_torsion_angle(atom_p, atom_o5p, atom_c5p, atom_c4p) 879 + p_o5_c5_c4 = get_torsion_angle(atom_p, atom_o5p, atom_c5p, atom_c4p)
877 o5_c5_c4_c1 = get_torsion_angle(atom_o5p, atom_c5p, atom_c4p, atom_c1p) 880 o5_c5_c4_c1 = get_torsion_angle(atom_o5p, atom_c5p, atom_c4p, atom_c1p)
878 c5_c4_c1_b1 = get_torsion_angle(atom_c5p, atom_c4p, atom_c1p, atom_b1) 881 c5_c4_c1_b1 = get_torsion_angle(atom_c5p, atom_c4p, atom_c1p, atom_b1)
879 c4_c1_b1_b2 = get_torsion_angle(atom_c4p, atom_c1p, atom_b1, atom_b2) 882 c4_c1_b1_b2 = get_torsion_angle(atom_c4p, atom_c1p, atom_b1, atom_b2)
...@@ -889,11 +892,11 @@ def measures_hrna(name, s, thr_idx): ...@@ -889,11 +892,11 @@ def measures_hrna(name, s, thr_idx):
889 l_dist.append([res.get_resname(), last_c4p_p, p_o5p, o5p_c5p, c5p_c4p, c4p_c1p, c1p_b1, b1_b2]) 892 l_dist.append([res.get_resname(), last_c4p_p, p_o5p, o5p_c5p, c5p_c4p, c4p_c1p, c1p_b1, b1_b2])
890 l_angl.append([res.get_resname(), lastc4p_p_o5p, lastc1p_lastc4p_p, lastc5p_lastc4p_p, p_o5p_c5p, o5p_c5p_c4p, c5p_c4p_c1p, c4p_c1p_b1, c1p_b1_b2]) 893 l_angl.append([res.get_resname(), lastc4p_p_o5p, lastc1p_lastc4p_p, lastc5p_lastc4p_p, p_o5p_c5p, o5p_c5p_c4p, c5p_c4p_c1p, c4p_c1p_b1, c1p_b1_b2])
891 l_tors.append([res.get_resname(), p_o5_c5_c4, o5_c5_c4_c1, c5_c4_c1_b1, c4_c1_b1_b2, o5_c5_c4_psuiv, c5_c4_psuiv_o5suiv, c4_psuiv_o5suiv_c5suiv, c1_c4_psuiv_o5suiv]) 894 l_tors.append([res.get_resname(), p_o5_c5_c4, o5_c5_c4_c1, c5_c4_c1_b1, c4_c1_b1_b2, o5_c5_c4_psuiv, c5_c4_psuiv_o5suiv, c4_psuiv_o5suiv_c5suiv, c1_c4_psuiv_o5suiv])
892 - df = pd.DataFrame(l_dist, columns=["Residu", "C4'-P", "P-O5'", "O5'-C5'", "C5'-C4'", "C4'-C1'", "C1'-B1", "B1-B2"]) 895 + df = pd.DataFrame(l_dist, columns=["Residue", "C4'-P", "P-O5'", "O5'-C5'", "C5'-C4'", "C4'-C1'", "C1'-B1", "B1-B2"])
893 df.to_csv(runDir + '/results/geometry/HiRE-RNA/distances/distances_HiRERNA '+name+'.csv') 896 df.to_csv(runDir + '/results/geometry/HiRE-RNA/distances/distances_HiRERNA '+name+'.csv')
894 - df = pd.DataFrame(l_angl, columns=["Residu", "C4'-P-O5'", "C1'-C4'-P", "C5'-C4'-P", "P-O5'-C5'", "O5'-C5'-C4'", "C5'-C4'-C1'", "C4'-C1'-B1", "C1'-B1-B2"]) 897 + df = pd.DataFrame(l_angl, columns=["Residue", "C4'-P-O5'", "C1'-C4'-P", "C5'-C4'-P", "P-O5'-C5'", "O5'-C5'-C4'", "C5'-C4'-C1'", "C4'-C1'-B1", "C1'-B1-B2"])
895 df.to_csv(runDir + '/results/geometry/HiRE-RNA/angles/angles_HiRERNA ' + name + ".csv") 898 df.to_csv(runDir + '/results/geometry/HiRE-RNA/angles/angles_HiRERNA ' + name + ".csv")
896 - df=pd.DataFrame(l_tors, columns=["Residu", "P-O5'-C5'-C4'", "O5'-C5'-C4'-C1'", "C5'-C4'-C1'-B1", "C4'-C1'-B1-B2", "O5'-C5'-C4'-P°", "C5'-C4'-P°-O5'°", "C4'-P°-O5'°-C5'°", "C1'-C4'-P°-O5'°"]) 899 + df=pd.DataFrame(l_tors, columns=["Residue", "P-O5'-C5'-C4'", "O5'-C5'-C4'-C1'", "C5'-C4'-C1'-B1", "C4'-C1'-B1-B2", "O5'-C5'-C4'-P°", "C5'-C4'-P°-O5'°", "C4'-P°-O5'°-C5'°", "C1'-C4'-P°-O5'°"])
897 df.to_csv(runDir + '/results/geometry/HiRE-RNA/torsions/torsions_HiRERNA '+name+'.csv') 900 df.to_csv(runDir + '/results/geometry/HiRE-RNA/torsions/torsions_HiRERNA '+name+'.csv')
898 901
899 @trace_unhandled_exceptions 902 @trace_unhandled_exceptions
...@@ -904,19 +907,19 @@ def measures_hrna_basepairs(name, s, thr_idx): ...@@ -904,19 +907,19 @@ def measures_hrna_basepairs(name, s, thr_idx):
904 907
905 setproctitle(f"RNANet statistics.py Worker {thr_idx+1} measures_hrna_basepairs({name})") 908 setproctitle(f"RNANet statistics.py Worker {thr_idx+1} measures_hrna_basepairs({name})")
906 909
907 - l=[] 910 + l = []
908 chain = next(s[0].get_chains()) 911 chain = next(s[0].get_chains())
909 912
910 # do not recompute something already computed 913 # do not recompute something already computed
911 if os.path.isfile(runDir + "/results/geometry/HiRE-RNA/basepairs/basepairs_"+name+".csv"): 914 if os.path.isfile(runDir + "/results/geometry/HiRE-RNA/basepairs/basepairs_"+name+".csv"):
912 return 915 return
913 916
914 - df=pd.read_csv(os.path.abspath(path_to_3D_data +"datapoints/" + name)) 917 + df = pd.read_csv(os.path.abspath(path_to_3D_data +"datapoints/" + name))
915 918
916 - if df['index_chain'][0] == 1: # ignore files with numbering errors : TODO : remove when we get DSSR Pro, there should not be numbering errors anymore 919 + # if df['index_chain'][0] == 1: # ignore files with numbering errors : TODO : remove when we get DSSR Pro, there should not be numbering errors anymore
917 - l = measures_hrna_basepairs_chain(name, chain, df, thr_idx) 920 + l = measures_hrna_basepairs_chain(name, chain, df, thr_idx)
918 df_calc = pd.DataFrame(l, columns=["type_LW", "nt1_idx", "nt1_res", "nt2_idx", "nt2_res", "Distance", 921 df_calc = pd.DataFrame(l, columns=["type_LW", "nt1_idx", "nt1_res", "nt2_idx", "nt2_res", "Distance",
919 - "211_angle", "112_angle", "dB1", "dB2", "alpha1", "alpha2", "3211_torsion", "1123_torsion"]) 922 + "211_angle", "112_angle", "dB1", "dB2", "alpha1", "alpha2", "3211_torsion", "1123_torsion"])
920 df_calc.to_csv(runDir + "/results/geometry/HiRE-RNA/basepairs/"+'basepairs_' + name + '.csv', float_format="%.3f") 923 df_calc.to_csv(runDir + "/results/geometry/HiRE-RNA/basepairs/"+'basepairs_' + name + '.csv', float_format="%.3f")
921 924
922 @trace_unhandled_exceptions 925 @trace_unhandled_exceptions
...@@ -997,6 +1000,7 @@ def basepair_measures(res, pair): ...@@ -997,6 +1000,7 @@ def basepair_measures(res, pair):
997 """ 1000 """
998 Measurement of the flat angles describing a basepair in the HiRE-RNA model 1001 Measurement of the flat angles describing a basepair in the HiRE-RNA model
999 """ 1002 """
1003 +
1000 if res.get_resname()=='C' or res.get_resname()=='U' : 1004 if res.get_resname()=='C' or res.get_resname()=='U' :
1001 atom_c4_res = [ atom.get_coord() for atom in res if "C4'" in atom.get_fullname() ] 1005 atom_c4_res = [ atom.get_coord() for atom in res if "C4'" in atom.get_fullname() ]
1002 atom_c1p_res = [ atom.get_coord() for atom in res if "C1'" in atom.get_fullname() ] 1006 atom_c1p_res = [ atom.get_coord() for atom in res if "C1'" in atom.get_fullname() ]
...@@ -1050,11 +1054,7 @@ def basepair_measures(res, pair): ...@@ -1050,11 +1054,7 @@ def basepair_measures(res, pair):
1050 warnings.simplefilter('ignore', RuntimeWarning) 1054 warnings.simplefilter('ignore', RuntimeWarning)
1051 b = res_12.angle(rho)*(180/np.pi) # equal to the previous implementation 1055 b = res_12.angle(rho)*(180/np.pi) # equal to the previous implementation
1052 c = pair_12.angle(-rho)*(180/np.pi) # 1056 c = pair_12.angle(-rho)*(180/np.pi) #
1053 - # a = calc_angle(a1_res, a2_res, a3_res)*(180/np.pi) # not required 1057 +
1054 - # b = calc_angle(a2_res, a1_res, a1_pair)*(180/np.pi)
1055 - # c = calc_angle(a1_res, a1_pair, a2_pair)*(180/np.pi)
1056 - # d = calc_angle(a3_pair, a2_pair, a1_pair)*(180/np.pi) # not required
1057 -
1058 # Compute plane vectors 1058 # Compute plane vectors
1059 n1 = (res_32**res_12).normalized() # ** between vectors, is the cross product 1059 n1 = (res_32**res_12).normalized() # ** between vectors, is the cross product
1060 n2 = (pair_32**pair_12).normalized() 1060 n2 = (pair_32**pair_12).normalized()
...@@ -1129,7 +1129,7 @@ def GMM_histo(data_ori, name_data, scan, toric=False, hist=True, col=None, save= ...@@ -1129,7 +1129,7 @@ def GMM_histo(data_ori, name_data, scan, toric=False, hist=True, col=None, save=
1129 if gmm.lower_bound_== max(maxlogv) : # takes the maximum 1129 if gmm.lower_bound_== max(maxlogv) : # takes the maximum
1130 nb_components = n_comp 1130 nb_components = n_comp
1131 # if there is convergence, keep the first maximum found 1131 # if there is convergence, keep the first maximum found
1132 - if abs(gmm.lower_bound_-log_max) < 0.02 : #threshold=0.02 1132 + if abs(gmm.lower_bound_-log_max) < 0.02 : # threshold=0.02
1133 nb_components = nb_log_max 1133 nb_components = nb_log_max
1134 break 1134 break
1135 log_max = max(maxlogv) 1135 log_max = max(maxlogv)
...@@ -1267,51 +1267,50 @@ def gmm_aa_dists(scan): ...@@ -1267,51 +1267,50 @@ def gmm_aa_dists(scan):
1267 1267
1268 df = pd.read_csv(os.path.abspath(runDir + "/results/geometry/all-atoms/distances/dist_atoms.csv")) 1268 df = pd.read_csv(os.path.abspath(runDir + "/results/geometry/all-atoms/distances/dist_atoms.csv"))
1269 1269
1270 - last_o3p_p = list(df["O3'-P"][~ np.isnan(df["O3'-P"])]) 1270 + last_o3p_p = df["O3'-P"][~ np.isnan(df["O3'-P"])].values.tolist()
1271 - # op3_p = list(df["OP3-P"][~ np.isnan(df["OP3-P"])]) 1271 + p_op1 = df["P-OP1"][~ np.isnan(df["P-OP1"])].values.tolist()
1272 - p_op1 = list(df["P-OP1"][~ np.isnan(df["P-OP1"])]) 1272 + p_op2 = df["P-OP2"][~ np.isnan(df["P-OP2"])].values.tolist()
1273 - p_op2 = list(df["P-OP2"][~ np.isnan(df["P-OP2"])]) 1273 + p_o5p = df["P-O5'"][~ np.isnan(df["P-O5'"])].values.tolist()
1274 - p_o5p = list(df["P-O5'"][~ np.isnan(df["P-O5'"])]) 1274 + o5p_c5p = df["O5'-C5'"][~ np.isnan(df["O5'-C5'"])].values.tolist()
1275 - o5p_c5p = list(df["O5'-C5'"][~ np.isnan(df["O5'-C5'"])]) 1275 + c5p_c4p = df["C5'-C4'"][~ np.isnan(df["C5'-C4'"])].values.tolist()
1276 - c5p_c4p = list(df["C5'-C4'"][~ np.isnan(df["C5'-C4'"])]) 1276 + c4p_o4p = df["C4'-O4'"][~ np.isnan(df["C4'-O4'"])].values.tolist()
1277 - c4p_o4p = list(df["C4'-O4'"][~ np.isnan(df["C4'-O4'"])]) 1277 + o4p_c1p = df["O4'-C1'"][~ np.isnan(df["O4'-C1'"])].values.tolist()
1278 - o4p_c1p = list(df["O4'-C1'"][~ np.isnan(df["O4'-C1'"])]) 1278 + c1p_c2p = df["C1'-C2'"][~ np.isnan(df["C1'-C2'"])].values.tolist()
1279 - c1p_c2p = list(df["C1'-C2'"][~ np.isnan(df["C1'-C2'"])]) 1279 + c2p_o2p = df["C2'-O2'"][~ np.isnan(df["C2'-O2'"])].values.tolist()
1280 - c2p_o2p = list(df["C2'-O2'"][~ np.isnan(df["C2'-O2'"])]) 1280 + c2p_c3p = df["C2'-C3'"][~ np.isnan(df["C2'-C3'"])].values.tolist()
1281 - c2p_c3p = list(df["C2'-C3'"][~ np.isnan(df["C2'-C3'"])]) 1281 + c3p_o3p = df["C3'-O3'"][~ np.isnan(df["C3'-O3'"])].values.tolist()
1282 - c3p_o3p = list(df["C3'-O3'"][~ np.isnan(df["C3'-O3'"])]) 1282 + c4p_c3p = df["C4'-C3'"][~ np.isnan(df["C4'-C3'"])].values.tolist()
1283 - c4p_c3p = list(df["C4'-C3'"][~ np.isnan(df["C4'-C3'"])])
1284 1283
1285 #if res = A ou G 1284 #if res = A ou G
1286 - c1p_n9 = list(df["C1'-N9"][~ np.isnan(df["C1'-N9"])]) 1285 + c1p_n9 = df["C1'-N9"][~ np.isnan(df["C1'-N9"])].values.tolist()
1287 - n9_c8 = list(df["N9-C8"][~ np.isnan(df["N9-C8"])]) 1286 + n9_c8 = df["N9-C8"][~ np.isnan(df["N9-C8"])].values.tolist()
1288 - c8_n7 = list(df["C8-N7"][~ np.isnan(df["C8-N7"])]) 1287 + c8_n7 = df["C8-N7"][~ np.isnan(df["C8-N7"])].values.tolist()
1289 - n7_c5 = list(df["N7-C5"][~ np.isnan(df["N7-C5"])]) 1288 + n7_c5 = df["N7-C5"][~ np.isnan(df["N7-C5"])].values.tolist()
1290 - c5_c6 = list(df["C5-C6"][~ np.isnan(df["C5-C6"])]) 1289 + c5_c6 = df["C5-C6"][~ np.isnan(df["C5-C6"])].values.tolist()
1291 - c6_n1 = list(df["C6-N1"][~ np.isnan(df["C6-N1"])]) 1290 + c6_n1 = df["C6-N1"][~ np.isnan(df["C6-N1"])].values.tolist()
1292 - n1_c2 = list(df["N1-C2"][~ np.isnan(df["N1-C2"])]) 1291 + n1_c2 = df["N1-C2"][~ np.isnan(df["N1-C2"])].values.tolist()
1293 - c2_n3 = list(df["C2-N3"][~ np.isnan(df["C2-N3"])]) 1292 + c2_n3 = df["C2-N3"][~ np.isnan(df["C2-N3"])].values.tolist()
1294 - n3_c4 = list(df["N3-C4"][~ np.isnan(df["N3-C4"])]) 1293 + n3_c4 = df["N3-C4"][~ np.isnan(df["N3-C4"])].values.tolist()
1295 - c4_n9 = list(df["C4-N9"][~ np.isnan(df["C4-N9"])]) 1294 + c4_n9 = df["C4-N9"][~ np.isnan(df["C4-N9"])].values.tolist()
1296 - c4_c5 = list(df["C4-C5"][~ np.isnan(df["C4-C5"])]) 1295 + c4_c5 = df["C4-C5"][~ np.isnan(df["C4-C5"])].values.tolist()
1297 #if res = G 1296 #if res = G
1298 - c6_o6 = list(df["C6-O6"][~ np.isnan(df["C6-O6"])]) 1297 + c6_o6 = df["C6-O6"][~ np.isnan(df["C6-O6"])].values.tolist()
1299 - c2_n2 = list(df["C2-N2"][~ np.isnan(df["C2-N2"])]) 1298 + c2_n2 = df["C2-N2"][~ np.isnan(df["C2-N2"])].values.tolist()
1300 #if res = A 1299 #if res = A
1301 - c6_n6 = list(df["C6-N6"][~ np.isnan(df["C6-N6"])]) 1300 + c6_n6 = df["C6-N6"][~ np.isnan(df["C6-N6"])].values.tolist()
1302 #if res = C ou U 1301 #if res = C ou U
1303 - c1p_n1 = list(df["C1'-N1"][~ np.isnan(df["C1'-N1"])]) 1302 + c1p_n1 = df["C1'-N1"][~ np.isnan(df["C1'-N1"])].values.tolist()
1304 - n1_c6 = list(df["N1-C6"][~ np.isnan(df["N1-C6"])]) 1303 + n1_c6 = df["N1-C6"][~ np.isnan(df["N1-C6"])].values.tolist()
1305 - c6_c5 = list(df["C6-C5"][~ np.isnan(df["C6-C5"])]) 1304 + c6_c5 = df["C6-C5"][~ np.isnan(df["C6-C5"])].values.tolist()
1306 - c5_c4 = list(df["C5-C4"][~ np.isnan(df["C5-C4"])]) 1305 + c5_c4 = df["C5-C4"][~ np.isnan(df["C5-C4"])].values.tolist()
1307 - c4_n3 = list(df["C4-N3"][~ np.isnan(df["C4-N3"])]) 1306 + c4_n3 = df["C4-N3"][~ np.isnan(df["C4-N3"])].values.tolist()
1308 - n3_c2 = list(df["N3-C2"][~ np.isnan(df["N3-C2"])]) 1307 + n3_c2 = df["N3-C2"][~ np.isnan(df["N3-C2"])].values.tolist()
1309 - c2_n1 = list(df["C2-N1"][~ np.isnan(df["C2-N1"])]) 1308 + c2_n1 = df["C2-N1"][~ np.isnan(df["C2-N1"])].values.tolist()
1310 - c2_o2 = list(df["C2-O2"][~ np.isnan(df["C2-O2"])]) 1309 + c2_o2 = df["C2-O2"][~ np.isnan(df["C2-O2"])].values.tolist()
1311 #if res =C 1310 #if res =C
1312 - c4_n4 = list(df["C4-N4"][~ np.isnan(df["C4-N4"])]) 1311 + c4_n4 = df["C4-N4"][~ np.isnan(df["C4-N4"])].values.tolist()
1313 #if res=U 1312 #if res=U
1314 - c4_o4 = list(df["C4-O4"][~ np.isnan(df["C4-O4"])]) 1313 + c4_o4 = df["C4-O4"][~ np.isnan(df["C4-O4"])].values.tolist()
1315 1314
1316 os.makedirs(runDir+"/results/figures/GMM/all-atoms/distances/commun/", exist_ok=True) 1315 os.makedirs(runDir+"/results/figures/GMM/all-atoms/distances/commun/", exist_ok=True)
1317 os.chdir(runDir+"/results/figures/GMM/all-atoms/distances/commun/") 1316 os.chdir(runDir+"/results/figures/GMM/all-atoms/distances/commun/")
...@@ -1495,10 +1494,10 @@ def gmm_pyle(scan): ...@@ -1495,10 +1494,10 @@ def gmm_pyle(scan):
1495 # Distances 1494 # Distances
1496 df = pd.read_csv(os.path.abspath(runDir + "/results/geometry/Pyle/distances/distances_pyle.csv")) 1495 df = pd.read_csv(os.path.abspath(runDir + "/results/geometry/Pyle/distances/distances_pyle.csv"))
1497 1496
1498 - p_c1p = list(df["C1'-P"][~ np.isnan(df["C1'-P"])]) 1497 + p_c1p = df["C1'-P"][~ np.isnan(df["C1'-P"])].values.tolist()
1499 - c1p_p = list(df["P-C1'"][~ np.isnan(df["P-C1'"])]) 1498 + c1p_p = df["P-C1'"][~ np.isnan(df["P-C1'"])].values.tolist()
1500 - p_c4p = list(df["C4'-P"][~ np.isnan(df["C4'-P"])]) 1499 + p_c4p = df["C4'-P"][~ np.isnan(df["C4'-P"])].values.tolist()
1501 - c4p_p = list(df["P-C4'"][~ np.isnan(df["P-C4'"])]) 1500 + c4p_p = df["P-C4'"][~ np.isnan(df["P-C4'"])].values.tolist()
1502 1501
1503 os.makedirs(runDir + "/results/figures/GMM/Pyle/distances/", exist_ok=True) 1502 os.makedirs(runDir + "/results/figures/GMM/Pyle/distances/", exist_ok=True)
1504 os.chdir(runDir + "/results/figures/GMM/Pyle/distances/") 1503 os.chdir(runDir + "/results/figures/GMM/Pyle/distances/")
......
1 +7nqh_1_BA_1-1457
1 6ydp_1_AA_1176-2737 2 6ydp_1_AA_1176-2737
2 6ydw_1_AA_1176-2737 3 6ydw_1_AA_1176-2737
3 -2z9q_1_A_1-72
4 -3ep2_1_Y_1-72
5 -3eq3_1_Y_1-72
6 -4v48_1_A6_1-73
7 -1ml5_1_b_5-121
8 -1ml5_1_a_1-2914
9 -1qzb_1_B_1-73
10 -1qza_1_B_1-73
11 -1ls2_1_B_1-73
12 -1ml5_1_A_2-1520
13 -1gsg_1_T_1-72
14 7d1a_1_A_805-902 4 7d1a_1_A_805-902
15 7d0g_1_A_805-913 5 7d0g_1_A_805-913
16 7d0f_1_A_817-913 6 7d0f_1_A_817-913
17 -3jcr_1_H_1-115
18 1vy7_1_AY_1-73 7 1vy7_1_AY_1-73
19 1vy7_1_CY_1-73 8 1vy7_1_CY_1-73
20 4w2h_1_CY_1-73 9 4w2h_1_CY_1-73
21 -5zzm_1_M_3-118 10 +7o7z_1_AH_144-220
22 -2rdo_1_A_3-118
23 -4v48_1_A9_3-118
24 -4v47_1_A9_3-118
25 -4v42_1_BA_1-2914
26 -4v42_1_BB_5-121
27 -2ob7_1_A_10-319
28 -1x1l_1_A_1-130
29 -1zc8_1_Z_1-91
30 -2ob7_1_D_1-130
31 -3dg2_1_A_1-1542
32 -3dg0_1_A_1-1542
33 -4v48_1_BA_1-1543
34 -4v47_1_BA_1-1542
35 -3dg4_1_A_1-1542
36 -3dg5_1_A_1-1542
37 -5zzm_1_N_1-2903
38 -2rdo_1_B_1-2904
39 -3dg2_1_B_1-2904
40 -3dg0_1_B_1-2904
41 -4v48_1_A0_1-2904
42 -4v47_1_A0_1-2904
43 -3dg4_1_B_1-2904
44 -3dg5_1_B_1-2904
45 -1eg0_1_O_1-73
46 -1r2x_1_C_1-58
47 -1r2w_1_C_1-58
48 -1eg0_1_L_1-56
49 -1jgq_1_A_2-1520
50 -4v42_1_AA_2-1520
51 -1jgo_1_A_2-1520
52 -1jgp_1_A_2-1520
53 -1zc8_1_A_1-59
54 -1mvr_1_D_1-59
55 4c9d_1_D_29-1 11 4c9d_1_D_29-1
56 4c9d_1_C_29-1 12 4c9d_1_C_29-1
57 -4adx_1_9_1-121 13 +7aih_1_1_2984-3610
58 -1zn1_1_B_1-59 14 +7aih_1_1_2400-2963
59 -1emi_1_B_1-108 15 +7ane_1_2_2489-3115
60 -3iy9_1_A_498-1027 16 +7ane_1_2_1904-2468
61 -3ep2_1_B_1-50
62 -3eq3_1_B_1-50
63 -3eq4_1_B_1-50
64 -2iy3_1_B_9-105
65 -3jcr_1_N_1-106
66 -2vaz_1_A_64-177
67 -2ftc_1_R_81-1466
68 -3jcr_1_M_1-141
69 -4v5z_1_B0_1-2902
70 5g2x_1_A_595-692 17 5g2x_1_A_595-692
71 -3iy8_1_A_1-540 18 +7aor_1_2_2589-3210
72 -4v5z_1_BY_2-113 19 +7aor_1_2_2020-2579
73 -4v5z_1_BZ_1-70
74 -4v5z_1_B1_2-123
75 -3pgw_1_R_1-164
76 -3pgw_1_N_1-164
77 -3cw1_1_x_1-138
78 -3cw1_1_w_1-138
79 -3cw1_1_V_1-138
80 -3cw1_1_v_1-138
81 -1mvr_1_B_1-96
82 -4adx_1_0_1-2923
83 -3eq4_1_Y_1-69
84 7a5p_1_2_259-449 20 7a5p_1_2_259-449
21 +7aor_1_A_2589-3210
22 +7aor_1_A_2020-2579
23 +7am2_1_1_2491-3117
24 +7am2_1_1_1904-2470
25 +7ane_1_1_2489-3115
26 +7ane_1_1_1904-2468
85 6uz7_1_8_2140-2825 27 6uz7_1_8_2140-2825
86 -4v5z_1_AA_1-1563
87 -6cfj_1_1X
88 -6cfj_1_2X
89 -5hcq_1_1X
90 -6cae_1_1X
91 -5hcq_1_2X
92 -5hcr_1_1X
93 -4z8c_1_1X
94 -5j4b_1_1X
95 -6xhy_1_1X
96 -6xhy_1_2X
97 -5j4b_1_2X
98 -4z8c_1_2X
99 -6cae_1_2X
100 -5j4c_1_1X
101 -5w4k_1_1X
102 -6of1_1_1X
103 -6xhw_1_1X
104 -5hcr_1_2X
105 -5hd1_1_1X
106 -5hcp_1_1X
107 -6of1_1_2X
108 -5hau_1_1W
109 -5j4c_1_2X
110 -5wis_1_1X
111 -6xhv_1_1X
112 -6xqd_1_1X
113 -6nd5_1_1X
114 -5w4k_1_2X
115 -6xhw_1_2X
116 -5hau_1_2W
117 -6xqd_1_2X
118 -6xhv_1_2X
119 -4y4p_1_1X
120 -6o97_1_1X
121 -5hcp_1_2X
122 -5doy_1_1X
123 -4zer_1_1X
124 -5wit_1_1X
125 -5hd1_1_2X
126 -6nd5_1_2X
127 -4z3s_1_1X
128 -7jql_1_1X
129 -7jqm_1_1X
130 -7jql_1_2X
131 -5wis_1_2X
132 -6nd6_1_1X
133 -6o97_1_2X
134 -4y4p_1_2X
135 -7jqm_1_2X
136 -4z3s_1_2X
137 -4zer_1_2X
138 -6uo1_1_2X
139 -6uo1_1_1X
140 -5doy_1_2X
141 -5wit_1_2X
142 -5f8k_1_1X
143 -6nd6_1_2X
144 -6xqe_1_1X
145 -6xqe_1_2X
146 -6n9e_1_1X
147 -6n9e_1_2X
148 -6n9f_1_1X
149 -5f8k_1_2X
150 -6n9f_1_2X
151 -6xz7_1_F
152 -6xzb_1_F2
153 -6xza_1_F2
154 -6y69_1_W
155 -5afi_1_V
156 -5afi_1_W
157 -6h4n_1_W
158 -5wdt_1_V
159 -5wfs_1_V
160 -5wdt_1_W
161 -5wfs_1_W
162 -5we4_1_V
163 -5we4_1_W
164 -5uq8_1_Y
165 -6c4i_1_Y
166 -6c4i_1_X
167 -6yef_1_X
168 -5zeb_1_V
169 -5zep_1_W
170 -5lzd_1_V
171 -5we6_1_V
172 -5wfk_1_V
173 -5wfk_1_W
174 -5we6_1_W
175 -5u4i_1_Y
176 -5uq7_1_Y
177 -5u4i_1_X
178 -5lza_1_V
179 -5wf0_1_V
180 -5wf0_1_W
181 -5zeu_1_V
182 -5l3p_1_X
183 -3jcj_1_V
184 -6gxm_1_X
185 -6gwt_1_X
186 -6gxn_1_X
187 -6gxo_1_X
188 -3j9y_1_V
189 -6o9k_1_Y
190 -6o7k_1_V
191 -5lzf_1_V
192 -3jcn_1_V
193 -5lzc_1_V
194 -5u4j_1_X
195 -5u4j_1_Z
196 -5lzb_1_V
197 -6h58_1_W
198 -6h58_1_WW
199 -1eg0_1_O
200 -5j8b_1_X
201 -4v7j_1_AV
202 -4v7j_1_BV
203 -4v7k_1_BV
204 -4v7k_1_AV
205 -4v7k_1_BW
206 -4v7k_1_AW
207 -4v7j_1_AW
208 -4v7j_1_BW
209 -4v4j_1_Z
210 -6i0v_1_B
211 -5k77_1_X
212 -5k77_1_V
213 -5k77_1_Y
214 -5k77_1_W
215 -5k77_1_Z
216 -4pei_1_X
217 -4pei_1_V
218 -4pei_1_W
219 -4pei_1_Z
220 -4pei_1_Y
221 -4a3c_1_P
222 -4a3e_1_P
223 -6lkq_1_U
224 -7k00_1_B
225 -6ys3_1_A
226 -6qdw_1_A
227 -5zzm_1_M
228 -2rdo_1_A
229 -4v48_1_A9
230 -4v47_1_A9
231 -6hcj_1_Q3
232 -6hcq_1_Q3
233 -6o8w_1_U
234 -5mmm_1_Z
235 -4w2e_1_W
236 -5j4b_1_1Y
237 -6cfj_1_1W
238 -5w4k_1_1Y
239 -6xhy_1_1W
240 -5wit_1_1W
241 -6cfj_1_1Y
242 -6cfj_1_2W
243 -5j4c_1_1W
244 -5wis_1_1Y
245 -5j4c_1_1Y
246 -6xhw_1_1W
247 -6cfj_1_2Y
248 -5wis_1_1W
249 -5j4b_1_1W
250 -6xhv_1_1W
251 -6xhy_1_2W
252 -5j4c_1_2W
253 -5j4b_1_2W
254 -5j4b_1_2Y
255 -5j4c_1_2Y
256 -5w4k_1_1W
257 -6nd5_1_1Y
258 -6xhw_1_2W
259 -5wis_1_2Y
260 -5wit_1_2W
261 -6xhv_1_2W
262 -5doy_1_1Y
263 -5w4k_1_2Y
264 -4y4p_1_1Y
265 -4z3s_1_1Y
266 -5doy_1_1W
267 -5doy_1_2Y
268 -6nd5_1_1W
269 -4z3s_1_2Y
270 -4z3s_1_1W
271 -5w4k_1_2W
272 -6nd5_1_2Y
273 -4y4p_1_2Y
274 -6uo1_1_2Y
275 -6uo1_1_2W
276 -4y4p_1_1W
277 -4z3s_1_2W
278 -6uo1_1_1Y
279 -6xhy_1_1Y
280 -6uo1_1_1W
281 -5wis_1_2W
282 -5wit_1_1Y
283 -6nd5_1_2W
284 -4y4p_1_2W
285 -5doy_1_2W
286 -5wit_1_2Y
287 -6xhv_1_1Y
288 -6xhy_1_2Y
289 -6xhw_1_1Y
290 -6xhw_1_2Y
291 -6ucq_1_1Y
292 -6xhv_1_2Y
293 -4v4i_1_Z
294 -6ucq_1_1X
295 -6ucq_1_2Y
296 -4w2e_1_X
297 -6ucq_1_2X
298 -7n1p_1_DT
299 -7n2u_1_DT
300 -6yss_1_W
301 -7n30_1_DT
302 -7n31_1_DT
303 -7n2c_1_DT
304 -5afi_1_Y
305 -5uq8_1_Z
306 -5wdt_1_Y
307 -5wfs_1_Y
308 -6ysr_1_W
309 -5we4_1_Y
310 -6yst_1_W
311 -5uq7_1_Z
312 -5we6_1_Y
313 -5wfk_1_Y
314 -5wf0_1_Y
315 -6o9j_1_V
316 -6ysu_1_W
317 -3j46_1_A
318 -5j8b_1_Y
319 -5j8b_1_W
320 -3bbv_1_Z
321 -5aj0_1_BV
322 -5aj0_1_BW
323 -4wt8_1_AB
324 -4wt8_1_BB
325 -4v4j_1_Y
326 -4v4i_1_Y
327 -5uq8_1_X
328 -5uq7_1_X
329 -1jgq_1_A
330 -4v42_1_AA
331 -1jgo_1_A
332 -1jgp_1_A
333 -4v4j_1_W
334 -4v4i_1_W
335 -4v42_1_BA
336 -4wt8_1_CS
337 -4wt8_1_DS
338 -4v4j_1_X
339 -4v4i_1_X
340 -4v42_1_BB
341 -4jrc_1_B
342 -4jrc_1_A
343 -6lkq_1_S
344 -5h5u_1_H
345 -7d6z_1_F
346 -5lze_1_Y
347 -5lze_1_V
348 -5lze_1_X
349 -3jcj_1_G
350 -6o7k_1_G
351 -3dg2_1_A
352 -3dg0_1_A
353 -4v48_1_BA
354 -4v47_1_BA
355 -3dg4_1_A
356 -3dg5_1_A
357 -6d30_1_C
358 -6j7z_1_C
359 -3er9_1_D
360 -5kal_1_Y
361 -4nia_1_3
362 -5kal_1_Z
363 -4nia_1_7
364 -4nia_1_4
365 -5new_1_C
366 -4nia_1_U
367 -4nia_1_6
368 -4oq9_1_7
369 -4nia_1_1
370 -4oq9_1_4
371 -4nia_1_8
372 -4oq9_1_8
373 -4nia_1_5
374 -2vrt_1_E
375 -4nia_1_W
376 -4oq9_1_6
377 -4oq8_1_D
378 -4nia_1_Z
379 -4oq9_1_W
380 -4oq9_1_5
381 -4nia_1_2
382 -2vrt_1_F
383 -4oq9_1_U
384 -4oq9_1_Z
385 -4oq9_1_2
386 -4oq9_1_3
387 -1ddl_1_E
388 -4oq9_1_1
389 -6rt5_1_A
390 -6rt5_1_E
391 -4qu6_1_B
392 -6lkq_1_T
393 -6ys3_1_B
394 -6qdw_1_B
395 -3jbv_1_B
396 -3jbu_1_B
397 -5zzm_1_N
398 -2rdo_1_B
399 -3dg2_1_B
400 -3dg0_1_B
401 -4v48_1_A0
402 -4v47_1_A0
403 -3dg4_1_B
404 -3dg5_1_B
405 -6do8_1_B
406 -6dpi_1_B
407 -6dp9_1_B
408 -6dpb_1_B
409 -6dmn_1_B
410 -6dpp_1_B
411 -6dpk_1_B
412 -6dpd_1_B
413 -6dot_1_B
414 -6dok_1_B
415 -6dp8_1_B
416 -6dpl_1_B
417 -6dpg_1_B
418 -6dou_1_B
419 -6dpc_1_B
420 -6do9_1_B
421 -6dmv_1_B
422 -6dp4_1_B
423 -6dpn_1_B
424 -6doj_1_B
425 -6dph_1_B
426 -6dos_1_B
427 -6doo_1_B
428 -6dp6_1_B
429 -6dox_1_B
430 -6dp5_1_B
431 -6dol_1_B
432 -6dp1_1_B
433 -6doz_1_B
434 -6dp7_1_B
435 -6doq_1_B
436 -6dpa_1_B
437 -6dom_1_B
438 -6dog_1_B
439 -6dop_1_B
440 -6doh_1_B
441 -6doa_1_B
442 -6don_1_B
443 -6dov_1_B
444 -6dpo_1_B
445 -6dod_1_B
446 -6dob_1_B
447 -6dow_1_B
448 -6dpm_1_B
449 -6dpf_1_B
450 -6dp3_1_B
451 -6dp2_1_B
452 -6dpe_1_B
453 -6dpj_1_B
454 -6dor_1_B
455 -6dof_1_B
456 -6dp0_1_B
457 -6doi_1_B
458 -6doc_1_B
459 -6doe_1_B
460 -6n6g_1_D
461 -4b3r_1_W
462 -4b3t_1_W
463 -4b3s_1_W
464 -7b5k_1_X
465 -5o2r_1_X
466 -5kcs_1_1X
467 -7n1p_1_PT
468 -7n2u_1_PT
469 -7n30_1_PT
470 -7n31_1_PT
471 -7n2c_1_PT
472 -6yl5_1_I
473 -6yl5_1_E
474 -6yl5_1_A
475 -6yl5_1_K
476 -6yl5_1_G
477 -6zvk_1_E2
478 -6zvk_1_H2
479 -7a01_1_E2
480 -7a01_1_H2
481 -6fti_1_U
482 -6fti_1_W
483 -6ftj_1_U
484 -6ftj_1_W
485 -6ftg_1_U
486 -6ftg_1_W
487 -6x1b_1_D
488 -6x1b_1_F
489 -5f6c_1_C
490 -6i0t_1_B
491 -1b2m_1_C
492 -1b2m_1_D
493 -1b2m_1_E
494 -2uxc_1_Y
495 -4a3g_1_P
496 -4a3j_1_P
497 -7k00_1_5
498 -5mmi_1_Z
499 -3j9m_1_U
500 -7a5k_1_U3
501 -6nu2_1_U
502 -7a5g_1_U3
503 -6nu3_1_U
504 -5c0y_1_C
505 -6n6f_1_D
506 -4ohy_1_B
507 -4oi1_1_B
508 -4oi0_1_B
509 -5ipl_1_3
510 -6utw_1_333
511 -5ipm_1_3
512 -5ipn_1_3
513 -4ylo_1_3
514 -4yln_1_6
515 -4ylo_1_6
516 -4yln_1_3
517 -4yln_1_9
518 -5lzf_1_Y
519 -1n32_1_Z
520 -5zsl_1_D
521 -5zsd_1_C
522 -5zsd_1_D
523 -5zsl_1_E
524 -4nku_1_D
525 -4nku_1_H
526 -1cwp_1_E
527 -6thn_1_A
528 -6qik_1_Y
529 -6rzz_1_Y
530 -6ri5_1_Y
531 -6qt0_1_Y
532 -6qtz_1_Y
533 -6t83_1_1B
534 -6t83_1_3B
535 -6t83_1_AA
536 -6t83_1_CA
537 -6s05_1_Y
538 -5jcs_1_X
539 -5fl8_1_X
540 -6ole_1_V
541 -6om0_1_V
542 -6oli_1_V
543 -6om7_1_V
544 -6w6l_1_V
545 -6olf_1_V
546 -3erc_1_G
547 -4qjd_1_D
548 -6of1_1_1W
549 -6cae_1_1Y
550 -6o97_1_1W
551 -6of1_1_1Y
552 -6of1_1_2W
553 -6o97_1_1Y
554 -6nd6_1_1Y
555 -6cae_1_1W
556 -6of1_1_2Y
557 -6cae_1_2Y
558 -6nd6_1_1W
559 -6cae_1_2W
560 -6o97_1_2Y
561 -6nd6_1_2Y
562 -6o97_1_2W
563 -6nd6_1_2W
564 -4wtm_1_T
565 -4wtm_1_P
566 -6gz4_1_BW
567 -6xz7_1_G
568 -6xzb_1_G2
569 -6gz5_1_BW
570 -6gz3_1_BW
571 -1qzb_1_B
572 -1qza_1_B
573 -1ls2_1_B
574 -3ep2_1_Y
575 -3eq3_1_Y
576 -4v48_1_A6
577 -2z9q_1_A
578 -4hot_1_X
579 -5ns4_1_C
580 -6d2z_1_C
581 -7eh0_1_I
582 -4tu0_1_F
583 -4tu0_1_G
584 -6r9o_1_B
585 -6is0_1_C
586 -5lzc_1_X
587 -5lzb_1_X
588 -5lzd_1_Y
589 -5lzc_1_Y
590 -5lzb_1_Y
591 -6zvi_1_E
592 -6sv4_1_MC
593 -6sv4_1_MB
594 -7nrd_1_SM
595 -6i7o_1_MB
596 -1gsg_1_T
597 -6zvi_1_D
598 -6sv4_1_NB
599 -6sv4_1_NC
600 -6i7o_1_NB
601 -1ml5_1_A
602 -7nsq_1_V
603 -6swa_1_Q
604 -6swa_1_R
605 -6ole_1_T
606 -6om0_1_T
607 -6oli_1_T
608 -6om7_1_T
609 -6olf_1_T
610 -6w6l_1_T
611 -6tnu_1_M
612 -5mc6_1_M
613 -7nrc_1_SM
614 -6tb3_1_N
615 -7b7d_1_SM
616 -7b7d_1_SN
617 -6tnu_1_N
618 -7nrc_1_SN
619 -7nrd_1_SN
620 -6zot_1_C
621 -2uxb_1_X
622 -2x1f_1_B
623 -2x1a_1_B
624 -3ep2_1_D
625 -3eq3_1_D
626 -1eg0_1_M
627 -3eq4_1_D
628 -5o1y_1_B
629 -4kzy_1_I
630 -4kzz_1_I
631 -4kzx_1_I
632 -3jcr_1_H
633 -6dzi_1_H
634 -5zeu_1_A
635 -6evj_1_N
636 -6evj_1_M
637 -6wub_1_A
638 -6wua_1_A
639 -6mpi_1_W
640 -5mfx_1_B
641 -5w0m_1_J
642 -5bud_1_E
643 -5w0m_1_I
644 -5w0m_1_H
645 -4j7m_1_B
646 -5bud_1_D
647 -6a4e_1_B
648 -6a4e_1_D
649 -6hxx_1_AA
650 -6hxx_1_AB
651 -6hxx_1_AC
652 -6hxx_1_AD
653 -6hxx_1_AE
654 -6hxx_1_AF
655 -6hxx_1_AG
656 -6hxx_1_AH
657 -6hxx_1_AI
658 -6hxx_1_AJ
659 -6hxx_1_AK
660 -6hxx_1_AL
661 -6hxx_1_AM
662 -6hxx_1_AN
663 -6hxx_1_AO
664 -6hxx_1_AP
665 -6hxx_1_AQ
666 -6hxx_1_AR
667 -6hxx_1_AS
668 -6hxx_1_AT
669 -6hxx_1_AU
670 -6hxx_1_AV
671 -6hxx_1_AW
672 -6hxx_1_AX
673 -6hxx_1_AY
674 -6hxx_1_AZ
675 -6hxx_1_BA
676 -6hxx_1_BB
677 -6hxx_1_BC
678 -6hxx_1_BD
679 -6hxx_1_BE
680 -6hxx_1_BF
681 -6hxx_1_BG
682 -6hxx_1_BH
683 -6hxx_1_BI
684 -5odv_1_A
685 -5odv_1_B
686 -5odv_1_C
687 -5odv_1_D
688 -5odv_1_E
689 -5odv_1_F
690 -5odv_1_G
691 -5odv_1_H
692 -5odv_1_I
693 -5odv_1_J
694 -5odv_1_K
695 -5odv_1_L
696 -5odv_1_M
697 -5odv_1_N
698 -5odv_1_O
699 -5odv_1_P
700 -5odv_1_Q
701 -5odv_1_R
702 -5odv_1_S
703 -5odv_1_T
704 -5odv_1_U
705 -5odv_1_V
706 -5odv_1_W
707 -5odv_1_X
708 -6t34_1_A
709 -6t34_1_B
710 -6t34_1_C
711 -6t34_1_D
712 -6t34_1_E
713 -6t34_1_F
714 -6t34_1_G
715 -6t34_1_H
716 -6t34_1_I
717 -6t34_1_J
718 -6t34_1_K
719 -6t34_1_L
720 -6t34_1_M
721 -6t34_1_N
722 -6t34_1_O
723 -6t34_1_P
724 -6t34_1_Q
725 -6t34_1_R
726 -6t34_1_S
727 -6ip8_1_ZY
728 -6ip5_1_ZY
729 -6ip5_1_ZU
730 -6ip6_1_ZY
731 -6ip8_1_ZZ
732 -6ip6_1_ZZ
733 -6uu3_1_333
734 -6uu1_1_333
735 -3er8_1_H
736 -3er8_1_G
737 -3er8_1_F
738 -5o3j_1_B
739 -4dr7_1_B
740 -1i5l_1_Y
741 -1i5l_1_U
742 -4dr6_1_B
743 -6i2n_1_U
744 -4v68_1_A0
745 -6vyu_1_Y
746 -6vyw_1_Y
747 -6vz7_1_Y
748 -6vz5_1_Y
749 -6vz3_1_Y
750 -6vyy_1_Y
751 -6vyx_1_Y
752 -6vyz_1_Y
753 -6vz2_1_Y
754 -1mvr_1_1
755 -6vyt_1_Y
756 -1cgm_1_I
757 -3jb7_1_T
758 -3jb7_1_M
759 -3j0o_1_D
760 -3j0l_1_D
761 -3j0q_1_D
762 -3j0p_1_D
763 -2tmv_1_R
764 -5a79_1_R
765 -5a7a_1_R
766 -2om3_1_R
767 -2xea_1_R
768 -4v7e_1_AA
769 -4v7e_1_AC
770 -4wtl_1_T
771 -4wtl_1_P
772 -1xnq_1_W
773 -7n2v_1_DT
774 -4peh_1_Z
775 -1vq6_1_4
776 -4am3_1_D
777 -4am3_1_H
778 -4am3_1_I
779 -4lj0_1_C
780 -4lj0_1_D
781 -4lj0_1_E
782 -5lzy_1_HH
783 -4wtj_1_T
784 -4wtj_1_P
785 -4xbf_1_D
786 -5w1h_1_B
787 -6n6d_1_D
788 -6n6k_1_C
789 -6n6k_1_D
790 -3rtj_1_D
791 -6ty9_1_M
792 -6tz1_1_N
793 -6q1h_1_D
794 -6q1h_1_H
795 -6p7p_1_F
796 -6p7p_1_E
797 -6p7p_1_D
798 -6vm6_1_J
799 -6vm6_1_G
800 -6wan_1_K
801 -6wan_1_H
802 -6wan_1_G
803 -6wan_1_L
804 -6wan_1_I
805 -6ywo_1_F
806 -6wan_1_J
807 -4oau_1_A
808 -6ywo_1_E
809 -6ywo_1_K
810 -6vm6_1_I
811 -6vm6_1_H
812 -6ywo_1_I
813 -2a1r_1_C
814 -6m6v_1_F
815 -6m6v_1_E
816 -2a1r_1_D
817 -3gpq_1_E
818 -3gpq_1_F
819 -6o79_1_C
820 -6vm6_1_K
821 -6m6v_1_G
822 -6hyu_1_D
823 -1laj_1_R
824 -6ybv_1_K
825 -6sce_1_B
826 -6xl1_1_C
827 -6scf_1_I
828 -6scf_1_K
829 -6yud_1_K
830 -6yud_1_O
831 -6scf_1_M
832 -6yud_1_P
833 -6scf_1_L
834 -6yud_1_M
835 -6yud_1_Q
836 -6w11_1_C
837 -6o6x_1_D
838 -4ba2_1_R
839 -7bdv_1_F
840 -7bdv_1_H
841 -6o6x_1_C
842 -7did_1_C
843 -6o7b_1_C
844 -6o6v_1_C
845 -6wxx_1_Y
846 -6wxx_1_X
847 -6r7b_1_D
848 -6r9r_1_D
849 -6ov0_1_E
850 -6ov0_1_H
851 -6ov0_1_G
852 -6o6v_1_D
853 -6ov0_1_F
854 -6o7b_1_D
855 -5e02_1_C
856 -6r9r_1_E
857 -6r7b_1_E
858 -6o7i_1_I
859 -6o7h_1_K
860 -7l6t_1_C
861 -7jyy_1_F
862 -7jyy_1_E
863 -7jz0_1_F
864 -7jz0_1_E
865 -6rt6_1_A
866 -6rt6_1_E
867 -1y1y_1_P
868 -5zuu_1_I
869 -5zuu_1_G
870 -7am2_1_R1
871 -4peh_1_W
872 -4peh_1_V
873 -4peh_1_X
874 -4peh_1_Y
875 -7d8c_1_C
876 -6mkn_1_W
877 -7kl3_1_B
878 -4cxg_1_C
879 -4cxh_1_C
880 -1x1l_1_A
881 -1zc8_1_Z
882 -2ob7_1_D
883 -2ob7_1_A
884 -4eya_1_E
885 -4eya_1_F
886 -4eya_1_Q
887 -4eya_1_R
888 -1mvr_1_C
889 -4ht9_1_E
890 -6z1p_1_AB
891 -6z1p_1_AA
892 -4ii9_1_C
893 -5mq0_1_3
894 -5uk4_1_X
895 -5uk4_1_V
896 -5uk4_1_W
897 -5uk4_1_U
898 -5f6c_1_E
899 -7nwh_1_HH
900 -4rcj_1_B
901 -1xnr_1_W
902 -6e0o_1_C
903 -6o75_1_D
904 -6o75_1_C
905 -6e0o_1_B
906 -3j06_1_R
907 -1r2x_1_C
908 -1r2w_1_C
909 -1eg0_1_L
910 -4eya_1_G
911 -4eya_1_H
912 -4eya_1_S
913 -4eya_1_T
914 -4dr4_1_V
915 -1ibl_1_Z
916 -1ibm_1_Z
917 -4dr5_1_V
918 -4d61_1_J
919 -7nwg_1_Q3
920 -5tbw_1_SR
921 -6hhq_1_SR
922 -6zvi_1_H
923 -6sv4_1_2B
924 -6sv4_1_2C
925 -6t83_1_2B
926 -6t83_1_A
927 -6i7o_1_2B
928 -6q8y_1_N
929 -6sv4_1_N
930 -6i7o_1_N
931 -6swa_1_S
932 -5k8h_1_A
933 -5z4a_1_B
934 -3jbu_1_V
935 -4ts2_1_Y
936 -4ts0_1_Y
937 -1h2c_1_R
938 -1h2d_1_S
939 -1h2d_1_R
940 -6szs_1_X
941 -5mgp_1_X
942 -6enu_1_X
943 -6enf_1_X
944 -6enj_1_X
945 -1pvo_1_L
946 -1pvo_1_G
947 -1pvo_1_H
948 -1pvo_1_J
949 -1pvo_1_K
950 -2ht1_1_K
951 -2ht1_1_J
952 -5sze_1_C
953 -6wre_1_D
954 -6i0u_1_B
955 -5zsa_1_C
956 -5zsa_1_D
957 -1n34_1_Z
958 -3pf5_1_S
959 -6ppn_1_A
960 -6ppn_1_I
961 -5flx_1_Z
962 -6eri_1_AX
963 -7k5l_1_R
964 -7d80_1_Y
965 -1zc8_1_A
966 -1zc8_1_C
967 -1zc8_1_B
968 -1zc8_1_G
969 -1zc8_1_I
970 -1zc8_1_H
971 -6bfb_1_Y
972 -1zc8_1_J
973 -7du2_1_R
974 -4v8z_1_CX
975 -6kqe_1_I
976 -5uh8_1_I
977 -5vi5_1_Q
978 -4xln_1_T
979 -4xlr_1_T
980 -4xln_1_Q
981 -5i2d_1_K
982 -5i2d_1_V
983 -4xlr_1_Q
984 -6sty_1_C
985 -6sty_1_F
986 -2xs5_1_D
987 -3ok4_1_N
988 -3ok4_1_L
989 -3ok4_1_Z
990 -3ok4_1_4
991 -3ok4_1_V
992 -3ok4_1_X
993 -3ok4_1_P
994 -3ok4_1_H
995 -3ok4_1_J
996 -3ok4_1_R
997 -3ok4_1_T
998 -3ok4_1_2
999 -6n6h_1_D
1000 -5wnt_1_B
1001 -3b0u_1_B
1002 -3b0u_1_A
1003 -4x9e_1_G
1004 -4x9e_1_H
1005 -6z1p_1_BB
1006 -6z1p_1_BA
1007 -3p22_1_C
1008 -3p22_1_G
1009 -2uxd_1_X
1010 -6ywe_1_BB
1011 -3ol9_1_D
1012 -3ol9_1_H
1013 -3ol9_1_L
1014 -3ol9_1_P
1015 -3olb_1_L
1016 -3olb_1_P
1017 -3olb_1_D
1018 -3olb_1_H
1019 -3ol6_1_D
1020 -3ol6_1_H
1021 -3ol6_1_L
1022 -3ol6_1_P
1023 -3ol8_1_D
1024 -3ol8_1_H
1025 -3ol7_1_L
1026 -3ol7_1_P
1027 -3ol7_1_D
1028 -3ol7_1_H
1029 -3ol8_1_L
1030 -3ol8_1_P
1031 -6yrq_1_E
1032 -6yrq_1_H
1033 -6yrq_1_G
1034 -6yrq_1_F
1035 -6yrb_1_C
1036 -6yrb_1_D
1037 -1mvr_1_D
1038 -6gz5_1_BV
1039 -6gz4_1_BV
1040 -6gz3_1_BV
1041 -6fti_1_Q
1042 -4v7e_1_AB
1043 -4v7e_1_AE
1044 -4v7e_1_AD
1045 -4x62_1_B
1046 -4x64_1_B
1047 -4x65_1_B
1048 -1xmq_1_W
1049 -4x66_1_B
1050 -3t1h_1_W
1051 -3t1y_1_W
1052 -1xmo_1_W
1053 -4adx_1_9
1054 -6kr6_1_B
1055 -1zn1_1_B
1056 -6z8k_1_X
1057 -4csf_1_U
1058 -4csf_1_Q
1059 -4csf_1_G
1060 -4csf_1_M
1061 -4csf_1_K
1062 -4csf_1_A
1063 -4csf_1_I
1064 -4csf_1_S
1065 -4csf_1_C
1066 -4csf_1_W
1067 -4csf_1_O
1068 -4csf_1_E
1069 -6ywx_1_BB
1070 -6th6_1_AA
1071 -6skg_1_AA
1072 -6skf_1_AA
1073 -6q8y_1_M
1074 -6i7o_1_M
1075 -6zmw_1_W
1076 -6ybv_1_W
1077 -2fz2_1_D
1078 -2xpj_1_D
1079 -2vrt_1_H
1080 -2vrt_1_G
1081 -1emi_1_B
1082 -6r9m_1_B
1083 -4nia_1_C
1084 -4nia_1_A
1085 -4nia_1_H
1086 -4nia_1_N
1087 -4nia_1_G
1088 -4nia_1_D
1089 -4nia_1_B
1090 -4nia_1_I
1091 -4nia_1_E
1092 -4nia_1_M
1093 -4oq9_1_I
1094 -4oq9_1_G
1095 -4oq9_1_C
1096 -4oq9_1_H
1097 -4oq9_1_N
1098 -4oq9_1_A
1099 -4oq9_1_D
1100 -4oq9_1_E
1101 -4oq9_1_M
1102 -4oq9_1_B
1103 -5uhc_1_I
1104 -1uvn_1_F
1105 -1uvn_1_B
1106 -1uvn_1_D
1107 -3iy9_1_A
1108 -4wtk_1_T
1109 -4wtk_1_P
1110 -6wlj_3_A
1111 -1vqn_1_4
1112 -4oav_1_C
1113 -4oav_1_A
1114 -3ep2_1_E
1115 -3eq3_1_E
1116 -3eq4_1_E
1117 -3ep2_1_A
1118 -3eq3_1_A
1119 -3eq4_1_A
1120 -3ep2_1_C
1121 -3eq3_1_C
1122 -3eq4_1_C
1123 -3ep2_1_B
1124 -3eq3_1_B
1125 -3eq4_1_B
1126 -4i67_1_B
1127 -4jf2_1_A
1128 -6k32_1_T
1129 -6k32_1_P
1130 -5mmj_1_A
1131 -5x8r_1_A
1132 -3fu2_1_B
1133 -3fu2_1_A
1134 -4v5z_1_BD
1135 -6yw5_1_AA
1136 -6ywe_1_AA
1137 -6ywy_1_AA
1138 -6ywx_1_AA
1139 -3nvk_1_G
1140 -3nvk_1_S
1141 -2iy3_1_B
1142 -1cwp_1_F
1143 -5z4j_1_B
1144 -5gmf_1_E
1145 -5gmf_1_H
1146 -6e4p_1_J
1147 -5gmf_1_F
1148 -5gmf_1_G
1149 -5gmg_1_D
1150 -5gmg_1_C
1151 -6e4p_1_K
1152 -3ie1_1_E
1153 -3ie1_1_H
1154 -3ie1_1_F
1155 -4dr7_1_V
1156 -3ie1_1_G
1157 -3s4g_1_C
1158 -3s4g_1_B
1159 -2qqp_1_R
1160 -1nb7_1_E
1161 -1nb7_1_F
1162 -4hos_1_X
1163 -3p6y_1_T
1164 -3p6y_1_V
1165 -3p6y_1_U
1166 -3p6y_1_Q
1167 -3p6y_1_W
1168 -5dto_1_B
1169 -6yml_1_A
1170 -6ymm_1_A
1171 -6ymi_1_M
1172 -6ymi_1_F
1173 -6ymi_1_A
1174 -6ylb_1_F
1175 -6ymi_1_C
1176 -6ymj_1_C
1177 -6ylb_1_C
1178 -6ymj_1_I
1179 -6ymj_1_O
1180 -4cxh_1_X
1181 -1uvj_1_F
1182 -1uvj_1_D
1183 -1uvj_1_E
1184 -6kqd_1_I
1185 -6kqd_1_S
1186 -5uh5_1_I
1187 -1ytu_1_F
1188 -1ytu_1_D
1189 -4kzz_1_J
1190 -7a09_1_F
1191 -5t2c_1_AN
1192 -4v5z_1_BF
1193 -3j6b_1_E
1194 -4v4f_1_B6
1195 -4v4f_1_A5
1196 -4v4f_1_A3
1197 -4v4f_1_B0
1198 -4v4f_1_B9
1199 -4v4f_1_A2
1200 -4v4f_1_A8
1201 -4v4f_1_A1
1202 -4v4f_1_A9
1203 -4v4f_1_BZ
1204 -4v4f_1_B8
1205 -4v4f_1_B7
1206 -4v4f_1_B5
1207 -4v4f_1_A0
1208 -4v4f_1_A7
1209 -4v4f_1_A4
1210 -4v4f_1_AZ
1211 -4v4f_1_B3
1212 -4v4f_1_B1
1213 -4v4f_1_B4
1214 -4v4f_1_A6
1215 -4v4f_1_B2
1216 -7m4y_1_V
1217 -7m4x_1_V
1218 -6v3a_1_V
1219 -6v39_1_V
1220 -6ck5_1_A
1221 -6ck5_1_B
1222 -5it9_1_I
1223 -7jqc_1_I
1224 -5zsb_1_C
1225 -5zsb_1_D
1226 -5zsn_1_D
1227 -5zsn_1_E
1228 -1cwp_1_D
1229 -3jcr_1_N
1230 -6gfw_1_R
1231 -3j6x_1_IR
1232 -3j6y_1_IR
1233 -2vaz_1_A
1234 -6zm6_1_X
1235 -6zm5_1_X
1236 -6zm6_1_W
1237 -6zm5_1_W
1238 -4v5z_1_BP
1239 -6n6e_1_D
1240 -4g7o_1_I
1241 -4g7o_1_S
1242 -5x22_1_S
1243 -5x22_1_I
1244 -5x21_1_I
1245 -5uh6_1_I
1246 -6l74_1_I
1247 -5uh9_1_I
1248 -4v5z_1_BS
1249 -2ftc_1_R
1250 -7a5j_1_X
1251 -6sag_1_R
1252 -4udv_1_R
1253 -5zsc_1_D
1254 -5zsc_1_C
1255 -6woy_1_I
1256 -6wox_1_I
1257 -4gkk_1_W
1258 -4v9e_1_AG
1259 -4v9e_1_BM
1260 -4v9e_1_AM
1261 -4v9e_1_AA
1262 -4v9e_1_BA
1263 -4v9e_1_BG
1264 -5lzs_1_II
1265 -6fqr_1_C
1266 -6ha1_1_X
1267 -5kcr_1_1X
1268 -6uu4_1_333
1269 -6uu0_1_333
1270 -6uuc_1_333
1271 -6uu2_1_333
1272 -6xl9_1_R
1273 -6b6h_1_3
1274 -6xh8_1_3
1275 -6pb4_1_3
1276 -3m7n_1_Z
1277 -3m85_1_X
1278 -3m85_1_Z
1279 -3m85_1_Y
1280 -5u34_1_B
1281 -5wnp_1_B
1282 -5wnv_1_B
1283 -5yts_1_B
1284 -1utd_1_6
1285 -1utd_1_Z
1286 -1utd_1_4
1287 -1utd_1_7
1288 -1utd_1_9
1289 -1utd_1_5
1290 -1utd_1_3
1291 -1utd_1_2
1292 -1utd_1_8
1293 -1utd_1_1
1294 -6n6i_1_C
1295 -6n6i_1_D
1296 -6n6a_1_D
1297 -6ij2_1_F
1298 -6ij2_1_G
1299 -6ij2_1_H
1300 -6ij2_1_E
1301 -3u2e_1_D
1302 -3u2e_1_C
1303 -7eh1_1_I
1304 -5uef_1_C
1305 -5uef_1_D
1306 -7eh2_1_R
1307 -7eh2_1_I
1308 -4x4u_1_H
1309 -4afy_1_D
1310 -6oy5_1_I
1311 -6owl_1_B
1312 -6owl_1_C
1313 -4afy_1_C
1314 -4lq3_1_R
1315 -6s0m_1_C
1316 -6ymw_1_C
1317 -7a5g_1_J
1318 -1m5k_1_B
1319 -1m5o_1_E
1320 -1m5v_1_B
1321 -6gx6_1_B
1322 -4k4s_1_D
1323 -4k4s_1_H
1324 -4k4t_1_H
1325 -4k4t_1_D
1326 -1zn1_1_C
1327 -1xpu_1_G
1328 -1xpu_1_L
1329 -1xpr_1_L
1330 -1xpu_1_H
1331 -1xpo_1_K
1332 -1xpo_1_J
1333 -1xpu_1_J
1334 -1xpo_1_H
1335 -1xpr_1_J
1336 -1xpu_1_K
1337 -1xpr_1_K
1338 -1xpo_1_M
1339 -1xpo_1_L
1340 -1xpu_1_M
1341 -1xpr_1_M
1342 -1xpo_1_G
1343 -1xpr_1_H
1344 -1xpr_1_G
1345 -5x70_1_E
1346 -5x70_1_G
1347 -6gc5_1_F
1348 -6gc5_1_H
1349 -6gc5_1_G
1350 -4rne_1_C
1351 -1n1h_1_B
1352 -7n2v_1_PT
1353 -4ohz_1_B
1354 -6t83_1_6B
1355 -4gv6_1_C
1356 -4gv6_1_B
1357 -4gv3_1_C
1358 -4gv3_1_B
1359 -4gv9_1_E
1360 -6i7o_1_L
1361 -2a8v_1_D
1362 -6qx3_1_G
1363 -2xnr_1_C
1364 -4gkj_1_W
1365 -4v5z_1_BC
1366 -5y88_1_X
1367 -4v5z_1_BB
1368 -5y85_1_D
1369 -5y85_1_B
1370 -5y87_1_D
1371 -3j0o_1_H
1372 -3j0l_1_H
1373 -3j0p_1_H
1374 -3j0q_1_H
1375 -4v5z_1_BH
1376 -3j0o_1_F
1377 -3j0l_1_F
1378 -3j0p_1_F
1379 -3j0q_1_F
1380 -3j0o_1_B
1381 -3j0l_1_B
1382 -3j0o_1_C
1383 -3j0l_1_C
1384 -3j0q_1_C
1385 -3j0p_1_C
1386 -3j0o_1_A
1387 -3j0l_1_A
1388 -3j0q_1_A
1389 -3j0p_1_A
1390 -4v5z_1_BJ
1391 -6ys3_1_V
1392 -6qdw_1_V
1393 -5hk0_1_F
1394 -4qm6_1_D
1395 -4qm6_1_C
1396 -4jzu_1_C
1397 -4jzv_1_C
1398 -5ytv_1_B
1399 -4k4z_1_P
1400 -4k4z_1_D
1401 -4k4x_1_L
1402 -4k4z_1_L
1403 -4k4x_1_D
1404 -4k4z_1_H
1405 -4k4x_1_H
1406 -4k4x_1_P
1407 -4a3b_1_P
1408 -4a3m_1_P
1409 -6u6y_1_E
1410 -6u6y_1_G
1411 -6u6y_1_F
1412 -6u6y_1_H
1413 -6qik_1_X
1414 -6rzz_1_X
1415 -6ri5_1_X
1416 -6qt0_1_X
1417 -6qtz_1_X
1418 -6s05_1_X
1419 -6t83_1_BB
1420 -6t83_1_4B
1421 -5fl8_1_Z
1422 -5jcs_1_Z
1423 -5mrc_1_BB
1424 -5mre_1_BB
1425 -5mrf_1_BB
1426 -4v5z_1_BN
1427 -3j46_1_P
1428 -3jcr_1_M
1429 -4e6b_1_A
1430 -4e6b_1_B
1431 -6a6l_1_D
1432 -4v8t_1_1
1433 -1uvi_1_D
1434 -1uvi_1_F
1435 -1uvi_1_E
1436 -3gs5_1_A
1437 -4m7d_1_P
1438 -4k4u_1_D
1439 -4k4u_1_H
1440 -6rt7_1_E
1441 -6rt7_1_A
1442 -2voo_1_C
1443 -2voo_1_D
1444 -5k78_1_X
1445 -5k78_1_Y
1446 -4ylo_1_9
1447 -5vyc_1_I2
1448 -5vyc_1_I3
1449 -5vyc_1_I5
1450 -5vyc_1_I1
1451 -5vyc_1_I6
1452 -5vyc_1_I4
1453 -6ip8_1_2M
1454 -6ip5_1_2M
1455 -6ip6_1_2M
1456 -6qcs_1_M
1457 -7b5k_1_Z
1458 -486d_1_G
1459 -486d_1_F
1460 -4v5z_1_B0
1461 -4nia_1_O
1462 -4nia_1_J
1463 -4nia_1_K
1464 -4nia_1_L
1465 -4nia_1_F
1466 -4oq9_1_K
1467 -4oq9_1_O
1468 -4oq9_1_J
1469 -4oq9_1_F
1470 -4oq9_1_L
1471 -6r9q_1_B
1472 -7m4u_1_A
1473 -6v3a_1_SN1
1474 -6v3b_1_SN1
1475 -6v39_1_SN1
1476 -6v3e_1_SN1
1477 -1mj1_1_Q
1478 -1mj1_1_R
1479 -4dr6_1_V
1480 -6kql_1_I
1481 -4eya_1_M
1482 -4eya_1_N
1483 -4eya_1_A
1484 -4eya_1_B
1485 -2wj8_1_D
1486 -2wj8_1_I
1487 -2wj8_1_L
1488 -2wj8_1_F
1489 -2wj8_1_C
1490 -2wj8_1_Q
1491 -2wj8_1_J
1492 -2wj8_1_P
1493 -2wj8_1_K
1494 -2wj8_1_E
1495 -2wj8_1_T
1496 -2wj8_1_B
1497 -2wj8_1_O
1498 -2wj8_1_N
1499 -2wj8_1_A
1500 -2wj8_1_H
1501 -2wj8_1_R
1502 -2wj8_1_M
1503 -2wj8_1_S
1504 -2wj8_1_G
1505 -4e6b_1_E
1506 -4e6b_1_F
1507 -6p71_1_I
1508 -3pdm_1_R
1509 -5det_1_P
1510 -5els_1_I
1511 -4n2s_1_B
1512 -5fl8_1_Y
1513 -5jcs_1_Y
1514 -4yoe_1_E
1515 -6ow3_1_I
1516 -6ovy_1_I
1517 -6oy6_1_I
1518 -4qvd_1_H
1519 -5gxi_1_B
1520 -3iy8_1_A
1521 -7n06_1_G
1522 -7n06_1_H
1523 -7n06_1_I
1524 -7n06_1_J
1525 -7n06_1_K
1526 -7n06_1_L
1527 -7n33_1_G
1528 -7n33_1_H
1529 -7n33_1_I
1530 -7n33_1_J
1531 -7n33_1_K
1532 -7n33_1_L
1533 -5mc6_1_N
1534 -2qwy_1_C
1535 -2qwy_1_A
1536 -2qwy_1_B
1537 -4eya_1_O
1538 -4eya_1_P
1539 -4eya_1_C
1540 -4eya_1_D
1541 -6htq_1_V
1542 -6htq_1_W
1543 -6htq_1_U
1544 -6uu6_1_333
1545 -5a0v_1_F
1546 -3avt_1_T
1547 -6d1v_1_C
1548 -4s2x_1_B
1549 -4s2y_1_B
1550 -5wnu_1_B
1551 -1zc8_1_F
1552 -1vtm_1_R
1553 -4v5z_1_BA
1554 -4v5z_1_BE
1555 -4v5z_1_BG
1556 -4v5z_1_BI
1557 -4v5z_1_BK
1558 -4v5z_1_BM
1559 -4v5z_1_BL
1560 -4v5z_1_BV
1561 -4v5z_1_BO
1562 -4v5z_1_BQ
1563 -4v5z_1_BR
1564 -4v5z_1_BT
1565 -4v5z_1_BU
1566 -4v5z_1_BW
1567 -4v5z_1_BY
1568 -4v5z_1_BX
1569 -4v5z_1_BZ
1570 -5elt_1_F
1571 -5elt_1_E
1572 -6xlj_1_R
1573 -6u9x_1_H
1574 -6u9x_1_K
1575 -5elk_1_R
1576 -6okk_1_G
1577 -4cxg_1_A
1578 -4cxh_1_A
1579 -6bk8_1_I
1580 -4cxg_1_B
1581 -4cxh_1_B
1582 -4v5z_1_B1
1583 -5z4d_1_B
1584 -6o78_1_E
1585 -6xa1_1_BV
1586 -6ha8_1_X
1587 -3bnp_1_B
1588 -1m8w_1_E
1589 -1m8w_1_F
1590 -5udi_1_B
1591 -5udl_1_B
1592 -5udk_1_B
1593 -5udj_1_B
1594 -5w5i_1_B
1595 -5w5i_1_D
1596 -5w5h_1_B
1597 -5w5h_1_D
1598 -4eya_1_K
1599 -4eya_1_L
1600 -4eya_1_I
1601 -4eya_1_J
1602 -4g9z_1_E
1603 -4g9z_1_F
1604 -3nma_1_B
1605 -3nma_1_C
1606 -6een_1_G
1607 -6een_1_I
1608 -6een_1_H
1609 -4wti_1_T
1610 -4wti_1_P
1611 -6dlr_1_A
1612 -6dlt_1_A
1613 -6dls_1_A
1614 -6dlq_1_A
1615 -6dnr_1_A
1616 -5l3p_1_Y
1617 -4hor_1_X
1618 -3rzo_1_R
1619 -5wlh_1_B
1620 -2f4v_1_Z
1621 -5ml7_1_B
1622 -1qln_1_R
1623 -3pgw_1_R
1624 -3pgw_1_N
1625 -3cw1_1_X
1626 -3cw1_1_W
1627 -3cw1_1_V
1628 -7b0y_1_A
1629 -6ogy_1_M
1630 -6ogy_1_N
1631 -6uej_1_B
1632 -7kga_1_A
1633 -6ywy_1_BB
1634 -5ytx_1_B
1635 -4g0a_1_H
1636 -6r9p_1_B
1637 -3koa_1_C
1638 -4n48_1_D
1639 -4n48_1_G
1640 -6kug_1_B
1641 -6ktc_1_V
1642 -6ole_1_U
1643 -6om0_1_U
1644 -6olg_1_BV
1645 -6oli_1_U
1646 -6om7_1_U
1647 -6w6l_1_U
1648 -6olz_1_BV
1649 -6olf_1_U
1650 -5lzd_1_X
1651 -6m7k_1_B
1652 -3cd6_1_4
1653 -3cma_1_5
1654 -6n9e_1_2W
1655 -1vqo_1_4
1656 -1qvg_1_3
1657 -3cme_1_5
1658 -5lzd_1_W
1659 -5lze_1_W
1660 -5lzc_1_W
1661 -5lzb_1_W
1662 -3wzi_1_C
1663 -1mvr_1_E
1664 -1mvr_1_B
1665 -1mvr_1_A
1666 -4adx_1_0
1667 -4adx_1_8
1668 -1n33_1_Z
1669 -6dti_1_W
1670 -3d2s_1_F
1671 -3d2s_1_H
1672 -5mrc_1_AA
1673 -5mre_1_AA
1674 -5mrf_1_AA
1675 -7jhy_1_Z
1676 -3eq4_1_Y
1677 -4wkr_1_C
1678 -4v99_1_EC
1679 -4v99_1_AC
1680 -4v99_1_BH
1681 -4v99_1_CH
1682 -4v99_1_AM
1683 -4v99_1_DC
1684 -4v99_1_JW
1685 -4v99_1_EH
1686 -4v99_1_BW
1687 -4v99_1_FW
1688 -4v99_1_AW
1689 -4v99_1_BC
1690 -4v99_1_BM
1691 -4v99_1_IC
1692 -4v99_1_EM
1693 -4v99_1_ER
1694 -4v99_1_IW
1695 -4v99_1_JH
1696 -4v99_1_JR
1697 -4v99_1_AH
1698 -4v99_1_GR
1699 -4v99_1_IR
1700 -4v99_1_BR
1701 -4v99_1_CW
1702 -4v99_1_HR
1703 -4v99_1_FH
1704 -4v99_1_HC
1705 -4v99_1_DW
1706 -4v99_1_GC
1707 -4v99_1_JC
1708 -4v99_1_DM
1709 -4v99_1_EW
1710 -4v99_1_AR
1711 -4v99_1_CR
1712 -4v99_1_JM
1713 -4v99_1_CC
1714 -4v99_1_IH
1715 -4v99_1_FR
1716 -4v99_1_CM
1717 -4v99_1_IM
1718 -4v99_1_FM
1719 -4v99_1_FC
1720 -4v99_1_GH
1721 -4v99_1_HM
1722 -4v99_1_HH
1723 -4v99_1_DR
1724 -4v99_1_HW
1725 -4v99_1_GW
1726 -4v99_1_DH
1727 -4v99_1_GM
1728 -6rt4_1_D
1729 -6rt4_1_C
1730 -6zvh_1_X
1731 -4dwa_1_D
1732 -6n6c_1_D
1733 -6n6j_1_C
1734 -6n6j_1_D
1735 -6p7q_1_E
1736 -6p7q_1_F
1737 -6p7q_1_D
1738 -6rcl_1_C
1739 -5jju_1_C
1740 -4ejt_1_G
1741 -1et4_1_A
1742 -1et4_1_C
1743 -1et4_1_B
1744 -1et4_1_D
1745 -1et4_1_E
1746 -1ddy_1_C
1747 -1ddy_1_A
1748 -1ddy_1_E
1749 -6lkq_1_W
1750 -6r47_1_A
1751 -3qsu_1_P
1752 -3qsu_1_R
1753 -2xs7_1_B
1754 -1n38_1_B
1755 -4qvc_1_G
1756 -6mpf_1_W
1757 -6spc_1_A
1758 -6spe_1_A
1759 -6zvk_1_D2
1760 -7a01_1_D2
1761 -6fti_1_V
1762 -6ftj_1_V
1763 -6ftg_1_V
1764 -3npn_1_A
1765 -4g0a_1_G
1766 -4g0a_1_F
1767 -4g0a_1_E
1768 -2b2d_1_S
1769 -5hkc_1_C
1770 -1rmv_1_B
1771 -4qu7_1_X
1772 -4qu7_1_V
1773 -4qu7_1_U
1774 -4v5z_1_AH
1775 -4v5z_1_AA
1776 -4v5z_1_AB
1777 -4v5z_1_AC
1778 -4v5z_1_AD
1779 -4v5z_1_AE
1780 -4v5z_1_AF
1781 -4v5z_1_AG
1782 -6pmi_1_3
1783 -6pmj_1_3
1784 -5hjz_1_C
......
This diff could not be displayed because it is too large.
...@@ -26,7 +26,7 @@ from os import path ...@@ -26,7 +26,7 @@ from os import path
26 from tqdm import tqdm 26 from tqdm import tqdm
27 from collections import Counter 27 from collections import Counter
28 from setproctitle import setproctitle 28 from setproctitle import setproctitle
29 -from RNAnet import Job, read_cpu_number, sql_ask_database, sql_execute, warn, notify, init_worker, trace_unhandled_exceptions 29 +from RNAnet import Job, read_cpu_number, sql_ask_database, sql_execute, warn, notify, init_with_tqdm, trace_unhandled_exceptions
30 from geometric_stats import * 30 from geometric_stats import *
31 31
32 np.set_printoptions(threshold=sys.maxsize, linewidth=np.inf, precision=8) 32 np.set_printoptions(threshold=sys.maxsize, linewidth=np.inf, precision=8)
...@@ -948,7 +948,11 @@ def par_distance_matrix(filelist, f, label, cm_coords, consider_all_atoms, s): ...@@ -948,7 +948,11 @@ def par_distance_matrix(filelist, f, label, cm_coords, consider_all_atoms, s):
948 nb_gap += 1 948 nb_gap += 1
949 coordinates_with_gaps.append(np.nan) 949 coordinates_with_gaps.append(np.nan)
950 else: 950 else:
951 - coordinates_with_gaps.append(coordinates[i - nb_gap]) 951 + try:
952 + coordinates_with_gaps.append(coordinates[i - nb_gap])
953 + except IndexError as e:
954 + warn(f"{filename} : {s.seq} at position {i}, we get {e}.", error=True)
955 + exit(0)
952 956
953 # Build the pairwise distances 957 # Build the pairwise distances
954 d = np.zeros((len(s.seq), len(s.seq)), dtype=np.float32) 958 d = np.zeros((len(s.seq), len(s.seq)), dtype=np.float32)
...@@ -1055,7 +1059,7 @@ def get_avg_std_distance_matrix(f, consider_all_atoms, multithread=False): ...@@ -1055,7 +1059,7 @@ def get_avg_std_distance_matrix(f, consider_all_atoms, multithread=False):
1055 else: 1059 else:
1056 # We split the work for one family on multiple workers. 1060 # We split the work for one family on multiple workers.
1057 1061
1058 - p = Pool(initializer=init_worker, initargs=(tqdm.get_lock(),), processes=nworkers) 1062 + p = Pool(initializer=init_with_tqdm, initargs=(tqdm.get_lock(),), processes=nworkers)
1059 try: 1063 try:
1060 fam_pbar = tqdm(total=len(align), desc=f"{f} {label} pair distances", position=0, unit="chain", leave=True) 1064 fam_pbar = tqdm(total=len(align), desc=f"{f} {label} pair distances", position=0, unit="chain", leave=True)
1061 # Apply work_pssm_remap to each RNA family 1065 # Apply work_pssm_remap to each RNA family
...@@ -1147,8 +1151,11 @@ def nt_3d_centers(cif_file, consider_all_atoms): ...@@ -1147,8 +1151,11 @@ def nt_3d_centers(cif_file, consider_all_atoms):
1147 Some chains have no C1' (e.g. 4v7f-3), therefore, an empty result is returned. 1151 Some chains have no C1' (e.g. 4v7f-3), therefore, an empty result is returned.
1148 """ 1152 """
1149 result =[] 1153 result =[]
1150 - structure = MMCIFParser().get_structure(cif_file, cif_file) 1154 + try:
1151 - 1155 + structure = MMCIFParser().get_structure(cif_file, cif_file)
1156 + except Exception as e:
1157 + warn(f"{cif_file} : {e}", error=True)
1158 + return result
1152 for model in structure: 1159 for model in structure:
1153 for chain in model: 1160 for chain in model:
1154 for residue in chain: 1161 for residue in chain:
...@@ -1203,7 +1210,7 @@ def process_jobs(joblist): ...@@ -1203,7 +1210,7 @@ def process_jobs(joblist):
1203 Starts a Pool to run the Job() objects in joblist. 1210 Starts a Pool to run the Job() objects in joblist.
1204 """ 1211 """
1205 tmp_nworkers = min(len(joblist), nworkers) 1212 tmp_nworkers = min(len(joblist), nworkers)
1206 - p = Pool(initializer=init_worker, initargs=(tqdm.get_lock(),), processes=tmp_nworkers) 1213 + p = Pool(initializer=init_with_tqdm, initargs=(tqdm.get_lock(),), processes=tmp_nworkers)
1207 pbar = tqdm(total=len(joblist), desc="Stat jobs", position=0, unit="job", leave=True) 1214 pbar = tqdm(total=len(joblist), desc="Stat jobs", position=0, unit="job", leave=True)
1208 1215
1209 try: 1216 try:
...@@ -1345,31 +1352,31 @@ if __name__ == "__main__": ...@@ -1345,31 +1352,31 @@ if __name__ == "__main__":
1345 # Define the tasks 1352 # Define the tasks
1346 joblist = [] 1353 joblist = []
1347 1354
1348 - # # Do eta/theta plots 1355 + # Do eta/theta plots
1349 - # if n_unmapped_chains and DO_WADLEY_ANALYSIS: 1356 + if n_unmapped_chains and DO_WADLEY_ANALYSIS:
1350 - # joblist.append(Job(function=reproduce_wadley_results, args=(1, False, (1,4), res_thr))) 1357 + joblist.append(Job(function=reproduce_wadley_results, args=(1, False, (1,4), res_thr)))
1351 - # joblist.append(Job(function=reproduce_wadley_results, args=(4, False, (1,4), res_thr))) 1358 + joblist.append(Job(function=reproduce_wadley_results, args=(4, False, (1,4), res_thr)))
1352 - 1359 +
1353 - # # Do distance matrices for each family excl. LSU/SSU (will be processed later) 1360 + # Do distance matrices for each family excl. LSU/SSU (will be processed later)
1354 - # if DO_AVG_DISTANCE_MATRIX: 1361 + if DO_AVG_DISTANCE_MATRIX:
1355 - # extracted_chains = [] 1362 + extracted_chains = []
1356 - # for file in os.listdir(path_to_3D_data + "rna_mapped_to_Rfam"): 1363 + for file in os.listdir(path_to_3D_data + "rna_mapped_to_Rfam"):
1357 - # if os.path.isfile(os.path.join(path_to_3D_data + "rna_mapped_to_Rfam", file)): 1364 + if os.path.isfile(os.path.join(path_to_3D_data + "rna_mapped_to_Rfam", file)):
1358 - # e1 = file.split('_')[0] 1365 + e1 = file.split('_')[0]
1359 - # e2 = file.split('_')[1] 1366 + e2 = file.split('_')[1]
1360 - # e3 = file.split('_')[2] 1367 + e3 = file.split('_')[2]
1361 - # extracted_chains.append(e1 + '[' + e2 + ']' + '-' + e3) 1368 + extracted_chains.append(e1 + '[' + e2 + ']' + '-' + e3)
1362 - # for f in [ x for x in famlist if (x not in LSU_set and x not in SSU_set) ]: # Process the rRNAs later only 3 by 3 1369 + for f in [ x for x in famlist if (x not in LSU_set and x not in SSU_set) ]: # Process the rRNAs later only 3 by 3
1363 - # joblist.append(Job(function=get_avg_std_distance_matrix, args=(f, True, False))) 1370 + joblist.append(Job(function=get_avg_std_distance_matrix, args=(f, True, False)))
1364 - # joblist.append(Job(function=get_avg_std_distance_matrix, args=(f, False, False))) 1371 + joblist.append(Job(function=get_avg_std_distance_matrix, args=(f, False, False)))
1365 - 1372 +
1366 - # # Do general family statistics 1373 + # Do general family statistics
1367 - # joblist.append(Job(function=stats_len)) # Computes figures about chain lengths 1374 + joblist.append(Job(function=stats_len)) # Computes figures about chain lengths
1368 - # joblist.append(Job(function=stats_freq)) # updates the database (nucleotide frequencies in families) 1375 + joblist.append(Job(function=stats_freq)) # updates the database (nucleotide frequencies in families)
1369 - # for f in famlist: 1376 + for f in famlist:
1370 - # joblist.append(Job(function=parallel_stats_pairs, args=(f,))) # updates the database (intra-chain basepair types within a family) 1377 + joblist.append(Job(function=parallel_stats_pairs, args=(f,))) # updates the database (intra-chain basepair types within a family)
1371 - # if f not in ignored: 1378 + if f not in ignored:
1372 - # joblist.append(Job(function=to_id_matrix, args=(f,))) # updates the database (identity matrices of families) 1379 + joblist.append(Job(function=to_id_matrix, args=(f,))) # updates the database (identity matrices of families)
1373 1380
1374 1381
1375 # Do geometric measures 1382 # Do geometric measures
...@@ -1382,7 +1389,7 @@ if __name__ == "__main__": ...@@ -1382,7 +1389,7 @@ if __name__ == "__main__":
1382 joblist.append(Job(function=measure_from_structure, args=(f,), how_many_in_parallel=nworkers)) # All-atom distances 1389 joblist.append(Job(function=measure_from_structure, args=(f,), how_many_in_parallel=nworkers)) # All-atom distances
1383 1390
1384 1391
1385 - # process_jobs(joblist) 1392 + process_jobs(joblist)
1386 1393
1387 # Now process the memory-heavy tasks family by family 1394 # Now process the memory-heavy tasks family by family
1388 if DO_AVG_DISTANCE_MATRIX: 1395 if DO_AVG_DISTANCE_MATRIX:
...@@ -1398,11 +1405,11 @@ if __name__ == "__main__": ...@@ -1398,11 +1405,11 @@ if __name__ == "__main__":
1398 1405
1399 # finish the work after the parallel portions 1406 # finish the work after the parallel portions
1400 1407
1401 - # per_chain_stats() # per chain base frequencies and basepair types 1408 + per_chain_stats() # per chain base frequencies and basepair types
1402 - # seq_idty() # identity matrices from pre-computed .npy matrices 1409 + seq_idty() # identity matrices from pre-computed .npy matrices
1403 - # stats_pairs() 1410 + stats_pairs()
1404 if n_unmapped_chains: 1411 if n_unmapped_chains:
1405 - # general_stats() 1412 + general_stats()
1406 os.makedirs(runDir+"/results/figures/GMM/", exist_ok=True) 1413 os.makedirs(runDir+"/results/figures/GMM/", exist_ok=True)
1407 os.makedirs(runDir+"/results/geometry/json/", exist_ok=True) 1414 os.makedirs(runDir+"/results/geometry/json/", exist_ok=True)
1408 concat_dataframes(runDir + '/results/geometry/all-atoms/distances/', 'dist_atoms.csv') 1415 concat_dataframes(runDir + '/results/geometry/all-atoms/distances/', 'dist_atoms.csv')
......