Louis BECQUEY

Pipeline class

This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
1 +# This is a script supposed to be run periodically as a cron job
2 +
3 +# Run RNANet
4 +cd /home/lbecquey/Projects/RNANet;
5 +rm -f stdout.txt stderr.txt errors.txt;
6 +time './RNAnet.py --3d-folder /home/lbequey/Data/RNA/3D/ --seq-folder /home/lbecquey/Data/RNA/sequences/' > stdout.txt 2> stderr.txt;
7 +
8 +# Sync in Seafile
9 +seaf-cli start;
10 +
11 +seaf-cli stop;
12 +
1 +1gsg_1_T_1-72
1 +1gsg_1_T_1-72
2 +DSSR warning for 1gsg_1_T_1-72: no nucleotides found
3 +
1 #!/usr/bin/python3.8 1 #!/usr/bin/python3.8
2 # This file is supposed to propose regression models on the computation time and mem usage of the re-alignment jobs. 2 # This file is supposed to propose regression models on the computation time and mem usage of the re-alignment jobs.
3 -# Light jobs are monitored by the Monitor class in RNAnet.py, and the measures are saved in jobstats.csv. 3 +# Jobs are monitored by the Monitor class in RNAnet.py, and the measures are saved in jobstats.csv.
4 # This was done to guess the amount of memory required to re-align the large ribosomal subunit families RF02541 and RF02543. 4 # This was done to guess the amount of memory required to re-align the large ribosomal subunit families RF02541 and RF02543.
5 -# INFO: Our home hardware was a 32-core VM with 50GB RAM + 8GB Swap. 5 +# INFO: Our home hardware was a 32-core VM with 50GB RAM
6 +
7 +# The conclusion of this was to move to SINA for ribosomal subunits.
8 +# However, this was before we use cmalign with --small, which is after all required for RF00005, RF00382 and RF01852
9 +# (we do not understand why the two last very small families require that much memory).
10 +# Feedback would be appreciated on wether it is better to
11 +# - Use a specialised database (SILVA) : better alignments (we guess?), but two kind of jobs
12 +# - Use cmalign --small everywhere (homogeneity)
13 +# Moreover, --small requires --nonbanded --cyk, which means the output alignement is the optimally scored one.
14 +# To date, we trust Infernal as the best tool to realign RNA. Is it ?
15 +
16 +# Contact: louis.becquey@univ-evry.fr (PhD student), fariza.tahi@univ-evry.fr (PI)
17 +
18 +# Running this file is not required to compute the dataset.
6 19
7 import matplotlib.pyplot as plt 20 import matplotlib.pyplot as plt
8 import pandas as pd 21 import pandas as pd
9 import numpy as np 22 import numpy as np
10 -import scipy, os 23 +import scipy, os, sqlite3
11 -from sklearn.linear_model import LinearRegression 24 +# from sklearn.linear_model import LinearRegression
12 from mpl_toolkits.mplot3d import Axes3D 25 from mpl_toolkits.mplot3d import Axes3D
26 +pd.set_option('display.max_rows', None)
27 +
28 +LSU_set = ["RF00002", "RF02540", "RF02541", "RF02543", "RF02546"] # From Rfam CLAN 00112
29 +SSU_set = ["RF00177", "RF02542", "RF02545", "RF01959", "RF01960"] # From Rfam CLAN 00111
30 +
31 +with sqlite3.connect("results/RNANet.db") as conn:
32 + df = pd.read_sql("SELECT rfam_acc, max_len, nb_total_homol, comput_time, comput_peak_mem FROM family;", conn)
13 33
14 -jobstats = pd.read_csv("data/jobstats.csv", sep=",") 34 +to_remove = [ f for f in df.rfam_acc if f in LSU_set+SSU_set ]
15 -families = pd.read_csv("data/statistics.csv", sep=",") 35 +df = df.set_index('rfam_acc').drop(to_remove)
16 - 36 +print(df)
17 -computed_families = []
18 -comptimes = []
19 -maxmem = []
20 -nchains = []
21 -maxlengths = []
22 -
23 -for index, fam in jobstats.iterrows():
24 - if fam["max_mem"] != -1 and fam["comp_time"] != -1:
25 - rfam_acc = fam["label"].split(' ')[1]
26 - computed_families.append(rfam_acc)
27 - comptimes.append(fam["comp_time"])
28 - maxmem.append(fam["max_mem"])
29 - nchains.append(
30 - families.loc[families["rfam_acc"] == rfam_acc, "total_seqs"].values[0])
31 - maxlengths.append(
32 - families.loc[families["rfam_acc"] == rfam_acc, "maxlength"].values[0])
33 -
34 -comptimes = [x/3600 for x in comptimes] # compte en heures
35 -maxlengths = [x/1000 for x in maxlengths] # compte en kB
36 -maxmem = [x/1024/1024 for x in maxmem] # compte en MB
37 -
38 -summary = pd.DataFrame({"family": computed_families, "n_chains": nchains,
39 - "max_length(kB)": maxlengths, "comp_time(h)": comptimes, "max_mem(MB)": maxmem})
40 -summary.sort_values("max_length(kB)", inplace=True)
41 -summary.to_csv("results/summary.csv")
42 37
43 # ======================================================== 38 # ========================================================
44 # Plot the data 39 # Plot the data
...@@ -47,39 +42,39 @@ summary.to_csv("results/summary.csv") ...@@ -47,39 +42,39 @@ summary.to_csv("results/summary.csv")
47 fig = plt.figure(figsize=(12,8), dpi=100) 42 fig = plt.figure(figsize=(12,8), dpi=100)
48 43
49 plt.subplot(231) 44 plt.subplot(231)
50 -plt.scatter(summary.n_chains, summary["max_mem(MB)"]) 45 +plt.scatter(df.nb_total_homol, df.comput_peak_mem)
51 plt.xlabel("Number of sequences") 46 plt.xlabel("Number of sequences")
52 plt.ylabel("Peak memory (MB)") 47 plt.ylabel("Peak memory (MB)")
53 48
54 plt.subplot(232) 49 plt.subplot(232)
55 -plt.scatter(summary["max_length(kB)"], summary["max_mem(MB)"]) 50 +plt.scatter(df.max_len, df.comput_peak_mem)
56 -plt.xlabel("Maximum length of sequences (kB)") 51 +plt.xlabel("Maximum length of sequences ")
57 plt.ylabel("Peak memory (MB)") 52 plt.ylabel("Peak memory (MB)")
58 53
59 ax = fig.add_subplot(233, projection='3d') 54 ax = fig.add_subplot(233, projection='3d')
60 -ax.scatter(summary.n_chains, summary["max_length(kB)"], summary["max_mem(MB)"]) 55 +ax.scatter(df.nb_total_homol, df.max_len, df.comput_peak_mem)
61 ax.set_xlabel("Number of sequences") 56 ax.set_xlabel("Number of sequences")
62 -ax.set_ylabel("Maximum length of sequences (kB)") 57 +ax.set_ylabel("Maximum length of sequences ")
63 ax.set_zlabel("Peak memory (MB)") 58 ax.set_zlabel("Peak memory (MB)")
64 59
65 plt.subplot(234) 60 plt.subplot(234)
66 -plt.scatter(summary.n_chains, summary["comp_time(h)"]) 61 +plt.scatter(df.nb_total_homol, df.comput_time)
67 plt.xlabel("Number of sequences") 62 plt.xlabel("Number of sequences")
68 -plt.ylabel("Computation time (h)") 63 +plt.ylabel("Computation time (s)")
69 64
70 plt.subplot(235) 65 plt.subplot(235)
71 -plt.scatter(summary["max_length(kB)"], summary["comp_time(h)"]) 66 +plt.scatter(df.max_len, df.comput_time)
72 -plt.xlabel("Maximum length of sequences (kB)") 67 +plt.xlabel("Maximum length of sequences ")
73 -plt.ylabel("Computation time (h)") 68 +plt.ylabel("Computation time (s)")
74 69
75 ax = fig.add_subplot(236, projection='3d') 70 ax = fig.add_subplot(236, projection='3d')
76 -ax.scatter(summary.n_chains, summary["max_length(kB)"], summary["comp_time(h)"]) 71 +ax.scatter(df.nb_total_homol, df.max_len, df.comput_time)
77 ax.set_xlabel("Number of sequences") 72 ax.set_xlabel("Number of sequences")
78 -ax.set_ylabel("Maximum length of sequences (kB)") 73 +ax.set_ylabel("Maximum length of sequences ")
79 -ax.set_zlabel("Computation time (h)") 74 +ax.set_zlabel("Computation time (s)")
80 75
81 plt.subplots_adjust(wspace=0.4) 76 plt.subplots_adjust(wspace=0.4)
82 -plt.savefig("results/realign_jobs_performance.png") 77 +plt.savefig("results/cmalign_jobs_performance.png")
83 78
84 # # ======================================================== 79 # # ========================================================
85 # # Linear Regression of max_mem as function of max_length 80 # # Linear Regression of max_mem as function of max_length
...@@ -87,20 +82,20 @@ plt.savefig("results/realign_jobs_performance.png") ...@@ -87,20 +82,20 @@ plt.savefig("results/realign_jobs_performance.png")
87 82
88 # # With scikit-learn 83 # # With scikit-learn
89 # model = LinearRegression(normalize=True, n_jobs=-1) 84 # model = LinearRegression(normalize=True, n_jobs=-1)
90 -# model.fit(summary["max_length(kB)"].values.reshape(-1, 1), summary["max_mem(MB)"]) 85 +# model.fit(df.max_len.values.reshape(-1, 1), df.comput_peak_mem)
91 # b0 = model.intercept_ 86 # b0 = model.intercept_
92 # b1 = model.coef_[0] 87 # b1 = model.coef_[0]
93 # print(f"peak_mem = {b0:.0f} + {b1:.0f} * max_length") 88 # print(f"peak_mem = {b0:.0f} + {b1:.0f} * max_length")
94 89
95 # # with scipy 90 # # with scipy
96 # coeffs = scipy.optimize.curve_fit( lambda t, B0, B1: B0+np.exp(B1*t), 91 # coeffs = scipy.optimize.curve_fit( lambda t, B0, B1: B0+np.exp(B1*t),
97 -# summary["max_length(kB)"].values, 92 +# df.max_len.values,
98 -# summary["max_mem(MB)"].values 93 +# df.comput_peak_mem.values
99 # )[0] 94 # )[0]
100 # print(f"peak_mem = {coeffs[0]:.0f} + e^({coeffs[1]:.0f} * max_length)") 95 # print(f"peak_mem = {coeffs[0]:.0f} + e^({coeffs[1]:.0f} * max_length)")
101 # coeffs_log = scipy.optimize.curve_fit( lambda t, B0, B1: B0+B1*np.log(t), 96 # coeffs_log = scipy.optimize.curve_fit( lambda t, B0, B1: B0+B1*np.log(t),
102 -# summary["max_length(kB)"].values, 97 +# df.max_len.values,
103 -# summary["max_mem(MB)"].values, 98 +# df.comput_peak_mem.values,
104 # p0=(400, 12000) 99 # p0=(400, 12000)
105 # )[0] 100 # )[0]
106 # print(f"peak_mem = {coeffs_log[0]:.0f} + {coeffs_log[1]:.0f} * log(max_length)") 101 # print(f"peak_mem = {coeffs_log[0]:.0f} + {coeffs_log[1]:.0f} * log(max_length)")
...@@ -108,8 +103,8 @@ plt.savefig("results/realign_jobs_performance.png") ...@@ -108,8 +103,8 @@ plt.savefig("results/realign_jobs_performance.png")
108 # # Re-plot 103 # # Re-plot
109 # x = np.linspace(0, 10, 1000) 104 # x = np.linspace(0, 10, 1000)
110 # plt.figure() 105 # plt.figure()
111 -# plt.scatter(summary["max_length(kB)"], summary["max_mem(MB)"]) 106 +# plt.scatter(df.max_len, df.comput_peak_mem)
112 -# plt.xlabel("Maximum length of sequences (kB)") 107 +# plt.xlabel("Maximum length of sequences ")
113 # plt.ylabel("Peak memory (MB)") 108 # plt.ylabel("Peak memory (MB)")
114 # plt.plot(x, b0 + b1*x, "-r", label="linear fit") 109 # plt.plot(x, b0 + b1*x, "-r", label="linear fit")
115 # plt.plot(x, coeffs[0] + np.exp(coeffs[1]*x), "-g", label="expo fit") 110 # plt.plot(x, coeffs[0] + np.exp(coeffs[1]*x), "-g", label="expo fit")
...@@ -123,7 +118,7 @@ plt.savefig("results/realign_jobs_performance.png") ...@@ -123,7 +118,7 @@ plt.savefig("results/realign_jobs_performance.png")
123 118
124 # # With scikit-learn 119 # # With scikit-learn
125 # model = LinearRegression(normalize=True, n_jobs=-1) 120 # model = LinearRegression(normalize=True, n_jobs=-1)
126 -# model.fit(summary.n_chains.values.reshape(-1, 1), summary["comp_time(h)"]) 121 +# model.fit(df.nb_total_homol.values.reshape(-1, 1), df.comput_time)
127 # b0 = model.intercept_ 122 # b0 = model.intercept_
128 # b1 = model.coef_[0] 123 # b1 = model.coef_[0]
129 # print(f"comp_time = {b0:.3f} + {b1:.3f} * n_chains") 124 # print(f"comp_time = {b0:.3f} + {b1:.3f} * n_chains")
...@@ -131,9 +126,9 @@ plt.savefig("results/realign_jobs_performance.png") ...@@ -131,9 +126,9 @@ plt.savefig("results/realign_jobs_performance.png")
131 # # Re-plot 126 # # Re-plot
132 # x = np.linspace(0, 500000, 1000) 127 # x = np.linspace(0, 500000, 1000)
133 # plt.figure() 128 # plt.figure()
134 -# plt.scatter(summary.n_chains, summary["comp_time(h)"]) 129 +# plt.scatter(df.nb_total_homol, df.comput_time)
135 # plt.xlabel("Number of sequences") 130 # plt.xlabel("Number of sequences")
136 -# plt.ylabel("Computation time (h)") 131 +# plt.ylabel("Computation time (s)")
137 # plt.plot(x, b0 + b1*x, "-r", label="linear fit") 132 # plt.plot(x, b0 + b1*x, "-r", label="linear fit")
138 # plt.legend() 133 # plt.legend()
139 # plt.savefig("results/regression/comp_time_linear_model.png") 134 # plt.savefig("results/regression/comp_time_linear_model.png")
......
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
1 -,cWW,tSH,tWH,tHS,other,tWW,tSS,tHW,cSH,cSW,cSS,tSW,cWH,cWS,tWS,tHH,cHW,cHH,cHS
2 -RF00001,61.87%,4.31%,3.21%,1.98%,3.33%,0.42%,0.97%,2.64%,5.30%,5.61%,0.11%,4.14%,0.61%,3.04%,0.93%,0.53%,0.89%,<.01%,0.10%
3 -RF00002,62.36%,5.36%,2.71%,6.11%,1.72%,2.25%,1.23%,2.54%,1.87%,4.10%,0.63%,1.50%,1.14%,0.68%,0.57%,3.20%,1.38%,0.59%,0.05%
4 -RF00004,85.28%,3.30%,5.23%,0.96%,0.69%,0.14%,0 %,0 %,0.28%,0.28%,0 %,0.69%,0.55%,0 %,0 %,0 %,0.28%,0.28%,2.06%
5 -RF00005,70.47%,0.91%,6.92%,0.09%,1.74%,3.56%,0.08%,3.29%,0.53%,0.52%,0.22%,1.75%,1.24%,2.00%,2.31%,1.71%,0.65%,0.48%,1.53%
6 -RF00008,64.74%,4.62%,8.09%,2.89%,1.16%,0 %,0 %,0 %,1.16%,5.20%,0 %,1.16%,0.58%,4.05%,4.62%,1.73%,0 %,0 %,0 %
7 -RF00009,81.68%,0.58%,2.53%,0.58%,0.97%,0 %,0.39%,1.36%,1.17%,2.73%,0.97%,2.34%,0.58%,0.78%,0.78%,0 %,1.36%,0.39%,0.78%
8 -RF00010,69.24%,2.58%,4.60%,0.37%,3.31%,0.55%,1.29%,0.92%,2.03%,2.76%,2.39%,2.76%,0.18%,1.84%,1.66%,0.55%,2.21%,0 %,0.74%
9 -RF00011,64.71%,4.50%,4.50%,1.04%,3.46%,2.08%,2.42%,2.77%,3.11%,1.04%,1.38%,2.08%,2.08%,1.04%,1.04%,1.04%,1.73%,0 %,0 %
10 -RF00013,89.66%,3.45%,0 %,0 %,3.45%,3.45%,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %
11 -RF00015,86.76%,4.18%,0.70%,3.48%,0.70%,0 %,0 %,0 %,0.70%,0.35%,0 %,1.74%,0.35%,0 %,0 %,0.35%,0 %,0.70%,0 %
12 -RF00017,75.15%,2.90%,3.05%,0.76%,3.35%,2.74%,0.46%,1.68%,1.07%,0.30%,2.13%,2.59%,1.68%,0.30%,0 %,0 %,0.91%,0.91%,0 %
13 -RF00020,88.26%,0.73%,2.39%,0.37%,0.55%,0.73%,0 %,0 %,0.73%,1.10%,1.28%,1.10%,0.37%,1.28%,0 %,0 %,0.73%,0 %,0.37%
14 -RF00023,73.83%,1.87%,12.15%,0.93%,1.87%,0.93%,0 %,0.93%,0 %,1.87%,0 %,0 %,0 %,1.87%,3.74%,0 %,0 %,0 %,0 %
15 -RF00026,81.41%,3.66%,6.15%,1.17%,0.44%,1.17%,0 %,0 %,0.29%,0.44%,0.15%,1.02%,0.29%,0.29%,0.44%,0.15%,0.15%,0.29%,2.49%
16 -RF00028,65.73%,2.86%,2.64%,3.83%,2.16%,1.62%,2.91%,2.05%,3.12%,1.29%,1.94%,0.38%,1.67%,0.54%,1.45%,0.22%,4.58%,0.86%,0.16%
17 -RF00029,80.70%,6.14%,0 %,0 %,0 %,3.51%,0 %,3.51%,0 %,0.88%,0 %,0 %,0.88%,0.88%,0 %,0 %,0.88%,0 %,2.63%
18 -RF00032,100.00%,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %
19 -RF00037,100.00%,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %
20 -RF00050,68.39%,3.87%,7.74%,3.87%,2.26%,0.32%,5.48%,0 %,0 %,0 %,5.81%,0 %,0 %,0.32%,0 %,0 %,1.94%,0 %,0 %
21 -RF00059,60.28%,1.50%,4.97%,3.70%,2.54%,1.85%,5.31%,0 %,0 %,0 %,7.16%,4.97%,4.50%,0.35%,0.12%,1.85%,0.23%,0.69%,0 %
22 -RF00061,77.86%,3.05%,2.29%,2.29%,0 %,2.29%,0 %,1.53%,2.29%,0 %,0 %,0.76%,0.76%,2.29%,0 %,1.53%,2.29%,0 %,0.76%
23 -RF00080,84.19%,6.45%,0 %,0 %,2.26%,0 %,1.94%,0 %,4.19%,0 %,0 %,0.65%,0 %,0 %,0 %,0 %,0 %,0 %,0.32%
24 -RF00100,65.22%,0 %,4.35%,0 %,5.07%,0.72%,0 %,8.70%,0 %,0 %,0 %,2.90%,13.04%,0 %,0 %,0 %,0 %,0 %,0 %
25 -RF00162,73.74%,6.90%,0.07%,2.15%,0.96%,0 %,0.59%,0 %,2.52%,2.82%,4.15%,2.37%,0.07%,0.45%,3.04%,0 %,0 %,0.15%,0 %
26 -RF00164,76.19%,4.76%,0 %,0 %,0 %,0 %,0 %,0 %,4.76%,4.76%,9.52%,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %
27 -RF00167,67.80%,0 %,7.77%,0.23%,2.51%,0 %,0 %,2.63%,2.22%,3.10%,2.63%,2.98%,0 %,5.14%,2.63%,0.29%,0.06%,0 %,0 %
28 -RF00168,76.92%,4.74%,1.95%,2.41%,0.45%,1.20%,1.20%,2.41%,3.23%,1.20%,0.68%,1.43%,0.98%,0 %,0 %,1.20%,0 %,0 %,0 %
29 -RF00169,70.92%,9.56%,3.19%,0.80%,4.78%,0 %,0.40%,9.16%,0 %,0 %,0 %,0 %,0.80%,0 %,0.40%,0 %,0 %,0 %,0 %
30 -RF00174,71.01%,2.90%,5.07%,4.35%,2.90%,0.72%,1.45%,2.17%,0 %,2.17%,2.90%,1.45%,0.72%,2.17%,0 %,0 %,0 %,0 %,0 %
31 -RF00177,63.05%,3.95%,4.48%,2.84%,3.20%,2.13%,2.18%,2.57%,2.50%,2.24%,2.00%,1.72%,2.02%,1.58%,1.44%,0.78%,0.70%,0.34%,0.29%
32 -RF00233,72.06%,1.47%,7.35%,2.94%,0 %,2.94%,0 %,0 %,4.41%,0 %,2.94%,1.47%,2.94%,0 %,0 %,0 %,1.47%,0 %,0 %
33 -RF00234,73.03%,1.96%,0.68%,0.64%,1.28%,1.96%,2.42%,5.29%,2.92%,0.59%,0.41%,7.07%,1.32%,0 %,0.23%,0 %,0.18%,0 %,0 %
34 -RF00250,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %
35 -RF00379,71.10%,6.46%,1.46%,7.07%,1.10%,0.12%,3.29%,0.24%,2.93%,1.46%,1.95%,1.59%,0.61%,0 %,0 %,0.12%,0.49%,0 %,0 %
36 -RF00380,64.46%,5.37%,1.24%,2.07%,6.20%,3.31%,2.89%,4.96%,2.48%,1.24%,2.07%,0 %,0 %,1.24%,1.24%,0 %,1.24%,0 %,0 %
37 -RF00382,50.00%,0 %,0 %,0 %,20.59%,0 %,0 %,0 %,0 %,0 %,0 %,2.94%,20.59%,0 %,0 %,0 %,0 %,5.88%,0 %
38 -RF00390,55.17%,0 %,0 %,0 %,6.90%,0 %,0 %,0 %,13.79%,6.90%,0 %,0 %,17.24%,0 %,0 %,0 %,0 %,0 %,0 %
39 -RF00442,56.52%,6.52%,6.52%,2.17%,8.70%,2.17%,2.17%,2.17%,0 %,4.35%,2.17%,0 %,4.35%,0 %,0 %,2.17%,0 %,0 %,0 %
40 -RF00458,70.22%,3.37%,5.06%,0 %,5.34%,1.97%,0 %,1.40%,1.97%,1.97%,0.28%,0.28%,2.81%,1.97%,0.84%,0.84%,0.56%,0.84%,0.28%
41 -RF00488,91.95%,0.20%,0 %,0.20%,0.80%,1.41%,0.10%,0.50%,0.91%,1.21%,0.10%,0.30%,0.70%,0.70%,0 %,0 %,0.30%,0.50%,0.10%
42 -RF00504,72.66%,3.88%,2.59%,7.77%,3.02%,0 %,2.45%,0.29%,2.59%,0 %,1.58%,0 %,0 %,0 %,0.14%,0.14%,2.88%,0 %,0 %
43 -RF00505,100.00%,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %
44 -RF01051,64.48%,5.37%,0 %,2.84%,4.93%,0 %,2.84%,4.18%,4.33%,2.09%,1.49%,1.94%,0.60%,3.43%,0.60%,0.60%,0 %,0.15%,0.15%
45 -RF01357,80.00%,10.00%,0 %,0 %,0 %,0 %,0 %,0 %,10.00%,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %
46 -RF01510,85.62%,0 %,0 %,0 %,1.09%,0 %,0 %,0 %,3.27%,0.22%,0 %,0 %,0 %,6.32%,3.49%,0 %,0 %,0 %,0 %
47 -RF01689,75.95%,3.80%,5.06%,0 %,1.27%,5.06%,0 %,0.63%,1.27%,0 %,1.27%,3.16%,0 %,0 %,2.53%,0 %,0 %,0 %,0 %
48 -RF01725,71.25%,7.50%,0 %,0 %,1.25%,0 %,5.00%,0 %,5.00%,0 %,5.00%,2.50%,0 %,0 %,2.50%,0 %,0 %,0 %,0 %
49 -RF01734,75.76%,8.08%,0 %,0 %,0 %,5.05%,3.03%,5.05%,0 %,0 %,1.01%,2.02%,0 %,0 %,0 %,0 %,0 %,0 %,0 %
50 -RF01739,61.06%,3.54%,4.42%,3.54%,7.96%,3.54%,0 %,0 %,3.54%,1.77%,0 %,0 %,3.54%,0 %,0 %,3.54%,3.54%,0 %,0 %
51 -RF01750,79.22%,4.55%,0 %,3.90%,1.30%,0 %,0 %,1.30%,0 %,0 %,3.90%,0 %,1.30%,0 %,0 %,0 %,4.55%,0 %,0 %
52 -RF01763,42.70%,0.28%,5.23%,0 %,12.67%,3.58%,0 %,0 %,2.20%,0 %,3.03%,2.75%,20.94%,6.61%,0 %,0 %,0 %,0 %,0 %
53 -RF01786,76.39%,2.78%,5.56%,2.78%,1.39%,0 %,0 %,2.78%,5.56%,0 %,0 %,0 %,0 %,0 %,2.78%,0 %,0 %,0 %,0 %
54 -RF01807,74.12%,3.53%,2.35%,0 %,2.35%,4.71%,2.35%,1.18%,0 %,1.18%,0 %,1.18%,2.35%,1.18%,0 %,1.18%,0 %,0 %,2.35%
55 -RF01826,50.00%,0 %,8.33%,4.17%,4.17%,4.17%,4.17%,0 %,0 %,0 %,4.17%,0 %,20.83%,0 %,0 %,0 %,0 %,0 %,0 %
56 -RF01831,78.61%,1.19%,2.97%,1.98%,1.19%,0 %,3.56%,3.96%,1.78%,2.38%,0 %,0 %,0 %,0 %,2.38%,0 %,0 %,0 %,0 %
57 -RF01846,86.57%,3.14%,0.43%,1.71%,1.00%,0.57%,0.29%,1.43%,0.29%,1.14%,0 %,1.00%,0.43%,0.57%,0.29%,0.29%,0.86%,0 %,0 %
58 -RF01852,71.41%,0.42%,1.47%,0.10%,4.63%,1.18%,0.06%,4.89%,4.63%,2.20%,0.03%,0.45%,6.65%,0.22%,0.64%,0 %,0.77%,0.06%,0.19%
59 -RF01854,68.87%,5.96%,4.64%,3.97%,3.97%,1.99%,2.65%,2.65%,0 %,0 %,1.99%,0 %,1.32%,0 %,0.66%,0 %,1.32%,0 %,0 %
60 -RF01857,71.35%,4.21%,2.81%,0 %,3.93%,2.25%,2.53%,5.34%,0 %,0.56%,1.97%,1.69%,0.56%,1.12%,1.69%,0 %,0 %,0 %,0 %
61 -RF01960,66.53%,3.35%,3.47%,2.51%,3.10%,2.23%,1.24%,2.17%,1.66%,2.49%,1.75%,1.64%,2.30%,1.38%,1.71%,0.42%,1.34%,0.49%,0.22%
62 -RF01998,56.65%,4.92%,4.37%,6.74%,3.10%,0.91%,7.10%,4.01%,2.73%,1.09%,0 %,0.36%,3.64%,0.36%,0 %,3.46%,0.55%,0 %,0 %
63 -RF02001,74.15%,5.56%,0.28%,5.07%,0.83%,0.07%,4.86%,3.47%,0.14%,0 %,0.07%,0.90%,0.63%,0.35%,0.49%,0 %,2.78%,0 %,0.35%
64 -RF02012,76.03%,5.48%,0 %,4.11%,1.37%,0.68%,0 %,0 %,2.74%,0 %,0 %,0 %,1.37%,2.05%,0 %,0 %,4.11%,1.37%,0.68%
65 -RF02253,100.00%,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %
66 -RF02348,80.00%,5.00%,0 %,3.33%,0 %,0 %,0 %,1.67%,1.67%,3.33%,0 %,0 %,0 %,0 %,0 %,0 %,5.00%,0 %,0 %
67 -RF02519,66.67%,0 %,0 %,0 %,16.67%,0 %,8.33%,0 %,8.33%,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %
68 -RF02540,60.17%,5.14%,3.83%,3.92%,2.79%,2.53%,3.11%,1.90%,2.22%,1.96%,2.38%,2.25%,1.45%,1.79%,1.50%,1.94%,0.55%,0.28%,0.31%
69 -RF02541,62.00%,4.13%,3.68%,3.79%,2.68%,2.55%,2.84%,2.12%,2.25%,1.87%,2.18%,1.89%,1.71%,1.78%,1.53%,1.61%,0.65%,0.35%,0.38%
70 -RF02543,66.82%,3.48%,2.88%,3.00%,2.51%,2.52%,1.61%,2.09%,1.74%,2.13%,1.88%,1.84%,1.95%,1.51%,1.25%,1.41%,0.74%,0.36%,0.26%
71 -RF02545,65.43%,0.82%,4.12%,2.88%,1.23%,3.70%,1.65%,1.65%,2.47%,2.47%,1.23%,1.23%,0.82%,2.47%,3.70%,2.47%,0.82%,0.82%,0 %
72 -RF02546,82.61%,0 %,8.70%,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,0 %,4.35%,0 %,0 %,0 %,0 %,4.35%
73 -RF02553,73.68%,2.63%,7.89%,0 %,0 %,2.63%,0 %,0 %,2.63%,0 %,0 %,5.26%,0 %,2.63%,0 %,2.63%,0 %,0 %,0 %
74 -RF02680,88.89%,0 %,2.78%,0 %,2.78%,0 %,0 %,0 %,0 %,0 %,0 %,0 %,5.56%,0 %,0 %,0 %,0 %,0 %,0 %
75 -RF02683,80.56%,2.78%,0 %,5.56%,2.78%,0 %,0 %,0 %,0 %,0 %,0 %,0 %,2.78%,2.78%,0 %,2.78%,0 %,0 %,0 %
76 -RF02796,78.69%,4.92%,0 %,4.92%,4.92%,0 %,0 %,0 %,4.92%,0 %,0 %,1.64%,0 %,0 %,0 %,0 %,0 %,0 %,0 %
77 -TOTAL,63.42%,3.93%,3.83%,3.23%,2.83%,2.35%,2.28%,2.28%,2.26%,2.13%,1.96%,1.88%,1.82%,1.68%,1.46%,1.25%,0.73%,0.35%,0.33%
This diff is collapsed. Click to expand it.