Skip to content

Commit 122ca17

Browse files
committed
pymol4rna: align_all_vs_all as aaa
1 parent e2d9d35 commit 122ca17

File tree

1 file changed

+65
-1
lines changed

1 file changed

+65
-1
lines changed

rna_tools/tools/PyMOL4RNA/PyMOL4RNA.py

Lines changed: 65 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,70 @@ def align_all(cycles = 5, filename="_rmsd_.csv"):
286286

287287
cmd.extend('align_all', align_all)
288288

289+
def align_all_vs_all(cycles = 5, filename="_rmsd_all_vs_all_.csv"):
290+
"""
291+
Args:
292+
293+
cycles (int): maximum number of outlier rejection cycles {default: 5}
294+
295+
Returns:
296+
297+
Prints a table of ref vs models with 7 items:
298+
299+
RaR RMSD after refinement
300+
#AA Number of aligned atoms after refinement
301+
CoR Number of refinement cycles
302+
RbR RMSD before refinement
303+
#AbR Number of aligned atoms before refinement
304+
RS Raw alignment score
305+
AR Number of residues aligned
306+
307+
and saves the table to filename as csv
308+
309+
old version:
310+
311+
1_solution_0_rpr 1_santalucia_1_rpr 5.60600471496582 958 4 5.763411521911621 974 416.0 46 -- RMSD 5.76 of 46 residues
312+
313+
"""
314+
molecules = cmd.get_names_of_type("object:molecule")
315+
316+
print("""
317+
RaR RMSD after refinement
318+
#AA Number of aligned atoms after refinement
319+
CoR Number of refinement cycles
320+
RbR RMSD before refinement
321+
#AbR Number of aligned atoms before refinement
322+
RS Raw alignment score
323+
AR Number of residues aligned
324+
""")
325+
report = []
326+
header = 'Ref Model RaR #AA CoR RbR #AbR RS AR'
327+
print(header)
328+
txt = 'Ref,Model,RMSD after refinement,Number of aligned atoms after refinement, Number of refinement cycles, RMSD before refinement, Number of aligned atoms before refinement, Raw alignment score, Number of residues aligned\n'
329+
for ref in molecules:
330+
#print(ref)
331+
for molecule in molecules:
332+
if ref == molecule:
333+
continue
334+
#print(molecule)
335+
values = cmd.align(molecule, ref, cycles=cycles)
336+
l = ([ref[:20].ljust(20), molecule[:20].ljust(20), str(round(values[0], 2)).ljust(4),
337+
str(round(values[1], 2)).ljust(4),
338+
str(round(values[2], 2)).ljust(4),
339+
str(round(values[3], 2)).ljust(4),
340+
str(round(values[4], 2)).ljust(4),
341+
str(round(values[5])).ljust(4),
342+
str(round(values[6], 2)).ljust(4)])
343+
print(' '.join(l))
344+
txt += ','.join([x.strip() for x in l]) + '\n'
345+
report.append([ref, molecule, values[3], values[6]])
346+
347+
with open(filename, 'w') as f:
348+
f.write(txt)
349+
350+
cmd.extend('align_all_vs_all', align_all_vs_all)
351+
cmd.extend('aaa', aaa)
352+
289353
def align_all_atoms(cycles = 5, filename="_rmsd_.csv"):
290354
"""
291355
Args:
@@ -345,7 +409,7 @@ def align_all_atoms(cycles = 5, filename="_rmsd_.csv"):
345409
with open(filename, 'w') as f:
346410
f.write(txt)
347411

348-
cmd.extend('aaa', align_all_atoms)
412+
#cmd.extend('aaa', align_all_atoms)
349413

350414
def load(f):
351415
from glob import glob

0 commit comments

Comments
 (0)