@@ -286,6 +286,70 @@ def align_all(cycles = 5, filename="_rmsd_.csv"):
286
286
287
287
cmd .extend ('align_all' , align_all )
288
288
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
+
289
353
def align_all_atoms (cycles = 5 , filename = "_rmsd_.csv" ):
290
354
"""
291
355
Args:
@@ -345,7 +409,7 @@ def align_all_atoms(cycles = 5, filename="_rmsd_.csv"):
345
409
with open (filename , 'w' ) as f :
346
410
f .write (txt )
347
411
348
- cmd .extend ('aaa' , align_all_atoms )
412
+ # cmd.extend('aaa', align_all_atoms)
349
413
350
414
def load (f ):
351
415
from glob import glob
0 commit comments