Пример #1
0
     for res in tprofile_res:                    
         for rdef in rdc_data[i][res]:                        
             res1, sp1 , res2, sp2, rdc = rdef[0], rdef[1], rdef[2], rdef[3], rdef[4] 
             res1_index = tprofile_res.index(res1)
             d_res1= tdomain_res[res1_index]
             try:
                 res2_index = tprofile_res.index(res2)
                 d_res2 = tdomain_res[res2_index]
             except:                        
                 if res2 == res1-1:
                     d_res2 = d_res1-1                            
             c1 = pymol.cmd.get_model('('+sname2+' and name '+sp1+' and resi '+str(d_res1)+' )').get_coord_list()
             c2 = pymol.cmd.get_model('('+sname2+' and name '+sp2+' and resi '+str(d_res2)+' )').get_coord_list()
             if c1 and c2:
                 v1 = rf.getVector(c1,c2)
                 vec_gm = rf.getGMR(sp1, sp2)
                 vec_data.append([v1,vec_gm,rdc])
             else:
                 continue # check this implementation
     maxcs = 10000 # maximum number of optimization calls
     soln, cov, info, mesg, success = leastsq(rf.RDC_ZYZ, ptensor, args=(scal, vec_data), full_output=1, maxfev=maxcs)
     chisq = sum(info["fvec"]*info["fvec"])          
     tensor_utr = utr.AnglesUTR(soln)
     if ud.rdc_filter(tensor_utr):                    
         if chisq/len(vec_data) < 7.0:                    
             # sort_nchi[tnchi]=[temp_nchi,temp_tensor,log,domain]                    
             temp_tensor.append([tensor_utr, vec_data])
             temp_nchi.append(chisq/len(vec_data))
     if len(temp_nchi) < i+1:                
         break            
 if sum(temp_nchi) < 25.0 and len(temp_nchi) == len(rdc_data):