1 from __future__
import print_function
2 import pyRMSD.RMSDCalculator
3 from pyRMSD.matrixHandler
import MatrixHandler
4 from pyRMSD.condensedMatrix
import CondensedMatrix
14 def get_pdbs_coordinates(path, idfile_A, idfile_B):
24 with open(idfile_A,
'w+')
as f1:
25 for str_file
in sorted(glob.glob(
"%s/sample_A/*.pdb" % path),
26 key=
lambda x:int(x.split(
'/')[-1].split(
'.')[0])):
27 print(str_file, num, file=f1)
28 models_name.append(str_file)
42 with open(idfile_B,
'w+')
as f2:
43 for str_file
in sorted(glob.glob(
"%s/sample_B/*.pdb" % path),
44 key=
lambda x:int(x.split(
'/')[-1].split(
'.')[0])):
45 print(str_file, num, file=f2)
46 models_name.append(str_file)
57 return np.array(conform), masses, radii, models_name
59 def get_rmfs_coordinates(path, idfile_A, idfile_B, subunit_name):
67 f1=open(idfile_A,
'w+')
68 f2=open(idfile_B,
'w+')
72 for sample_name,sample_id_file
in zip([
'A',
'B'],[f1,f2]):
74 for str_file
in sorted(glob.glob(
"%s/sample_%s/*.rmf3" % (path,sample_name)),key=
lambda x:int(x.split(
'/')[-1].split(
'.')[0])):
75 print(str_file, num, file=sample_id_file)
76 models_name.append(str_file)
79 inf = RMF.open_rmf_file_read_only(str_file)
90 for leaf
in s0.get_selected_particles():
93 pts.append([p.get_coordinates()[i]
for i
in range(3)])
95 if num == 0
and sample_name==
'A':
97 radii.append(p.get_radius())
105 ps_names.append(mol_name+
"_"+str(min(residues_in_bead))+
"_"+str(max(residues_in_bead))+
"_"+str(copy_number))
110 ps_names.append(mol_name+
"_"+residue_in_bead+
"_"+residue_in_bead+
"_"+str(copy_number))
118 return ps_names, masses, radii, np.array(conform), models_name
121 def get_rmfs_coordinates_one_rmf(path, rmf_A, rmf_B, subunit_name):
124 rmf_fh = RMF.open_rmf_file_read_only(rmf_A)
125 n_models = [rmf_fh.get_number_of_frames()]
126 rmf_fh = RMF.open_rmf_file_read_only(rmf_B)
127 n_models.append(rmf_fh.get_number_of_frames())
152 for leaf
in s0.get_selected_particles():
156 conform = np.empty([n_models[0]+n_models[1], pts, 3])
159 for rmf_file
in [rmf_A, rmf_B]:
161 models_name.append(rmf_file)
163 rmf_fh = RMF.open_rmf_file_read_only(rmf_file)
166 print(
"Opening RMF file:", rmf_file,
"with", rmf_fh.get_number_of_frames(),
"frames")
167 for f
in range(rmf_fh.get_number_of_frames()):
170 print(
" -- Opening frame", f,
"of", rmf_fh.get_number_of_frames())
178 particles = s0.get_selected_particles()
180 for i
in range(len(particles)):
183 pxyz = p.get_coordinates()
184 conform[mod_id][i][0] = pxyz[0]
185 conform[mod_id][i][1] = pxyz[1]
186 conform[mod_id][i][2] = pxyz[2]
189 if mod_id == 0
and rmf_file==rmf_A:
191 radii.append(p.get_radius())
197 ps_names.append(mol_name+
"_"+str(min(residues_in_bead))+
"_"+str(max(residues_in_bead))+
"_"+str(copy_number))
200 ps_names.append(mol_name+
"_"+residue_in_bead+
"_"+residue_in_bead+
"_"+str(copy_number))
203 return ps_names, masses, radii, conform, models_name, n_models
205 def get_rmsds_matrix(conforms, mode, sup, cores):
206 print(
"Mode:",mode,
"Superposition:",sup,
"Number of cores:",cores)
208 if(mode==
"cpu_serial" and not sup):
209 calculator = pyRMSD.RMSDCalculator.RMSDCalculator(
"NOSUP_OMP_CALCULATOR", conforms)
211 elif(mode==
"cpu_omp" and not sup):
212 calculator = pyRMSD.RMSDCalculator.RMSDCalculator(
"NOSUP_OMP_CALCULATOR", conforms)
213 calculator.setNumberOfOpenMPThreads(cores)
215 elif(mode==
"cpu_omp" and sup):
216 calculator = pyRMSD.RMSDCalculator.RMSDCalculator(
"QCP_OMP_CALCULATOR", conforms)
217 calculator.setNumberOfOpenMPThreads(cores)
219 elif(mode==
"cuda" and sup):
220 calculator = pyRMSD.RMSDCalculator.RMSDCalculator(
"QCP_CUDA_MEM_CALCULATOR", conforms)
223 print(
"Wrong values to pyRMSD ! Please Fix")
226 rmsd = calculator.pairwiseRMSDMatrix()
227 rmsd_matrix=CondensedMatrix(rmsd)
228 inner_data = rmsd_matrix.get_data()
229 np.save(
"Distances_Matrix.data", inner_data)
Select non water and non hydrogen atoms.
A decorator to associate a particle with a part of a protein/DNA/RNA.
atom::Hierarchies create_hierarchies(RMF::FileConstHandle fh, Model *m)
double get_mass(ResidueType c)
Get the mass from the residue type.
GenericHierarchies get_leaves(Hierarchy mhd)
Get all the leaves of the bit of hierarchy.
void read_pdb(TextInput input, int model, Hierarchy h)
Class for storing model, its restraints, constraints, and particles.
static bool get_is_setup(Model *m, ParticleIndex pi)
The standard decorator for manipulating molecular structures.
Ints get_index(const ParticlesTemp &particles, const Subset &subset, const Subsets &excluded)
void load_frame(RMF::FileConstHandle file, RMF::FrameID frame)
Load the given RMF frame into the state of the linked objects.
A decorator for a particle with x,y,z coordinates.
std::string get_molecule_name(Hierarchy h)
A decorator for a residue.
int get_copy_index(Hierarchy h)
Walk up the hierarchy to find the current copy index.
Functionality for loading, creating, manipulating and scoring atomic structures.
Select hierarchy particles identified by the biological name.
Support for the RMF file format for storing hierarchical molecular data and markup.
A decorator for a particle with x,y,z coordinates and a radius.