32import subprocess, os, tempfile, platform
101 info_line=lines[18].split(
',')
102 is_score=float(info_line[0].split(
'=')[1].strip())
103 aln_residues=int(lines[19].split(
'=')[1].strip())
104 aln_contacts=int(lines[20].split(
'=')[1].strip())
105 info_line=lines[21].split(
',')
106 rmsd=float(info_line[0].split(
'=')[1].strip())
108 tf1=[float(i.strip())
for i
in lines[25][1:].split()]
109 tf2=[float(i.strip())
for i
in lines[26][1:].split()]
110 tf3=[float(i.strip())
for i
in lines[27][1:].split()]
111 rot=
geom.Mat3(tf1[2], tf1[3], tf1[4], tf2[2], tf2[3],
112 tf2[4], tf3[2], tf3[3], tf3[4])
114 tf.PasteTranslation(
geom.Vec3(tf1[1], tf2[1], tf3[1]))
115 seq1 = seq.CreateSequence(
"1",lines[32].strip())
116 seq2 = seq.CreateSequence(
"2",lines[34].strip())
117 alignment = seq.CreateAlignment()
118 alignment.AddSequence(seq2)
119 alignment.AddSequence(seq1)
120 return iAlignResult(rmsd, tf, alignment, is_score, aln_residues, aln_contacts)
128 for k, v
in opts.items():
129 if type(v) == type(
True):
131 cmd_opts.append(
'-%s' % str(k))
133 cmd_opts.append(
'-%s %s' % (str(k), str(v)))
134 cmd_opts =
' '.join(cmd_opts)
135 model1_filename=os.path.join(tmp_dir,
'model01.pdb')
136 model2_filename=os.path.join(tmp_dir,
'model02.pdb')
137 if platform.system() ==
"Windows":
138 ialign_path=settings.Locate(
'ialign.pl', explicit_file_name=ialign)
139 command=
"\"%s\" %s %s %s" % (os.path.normpath(ialign_path), model1_filename, model2_filename, cmd_opts)
141 ialign_path=settings.Locate(
'ialign.pl', explicit_file_name=ialign)
142 command=
"\"%s\" \"%s\" \"%s\" %s" % (ialign_path, model1_filename, model2_filename, cmd_opts)
144 ps=subprocess.Popen(command, shell=
True, stdout=subprocess.PIPE)
145 stdout,_=ps.communicate()
146 lines=stdout.decode().splitlines()
152 raise RuntimeError(
"iAlign superposition failed")