Go to the documentation of this file.
49 void ReadResidueList( char *fname, unsigned int *nr, char *ch, unsigned int **r);
96 unsigned int *nh, unsigned int **h1, unsigned int **h2, boolean **added,
175 unsigned int nh, unsigned int *h1, unsigned int *h2,
226 unsigned int maxAtomsLink, TBioWorld *bw);
250 if ((*ch>= 'a')&&(*ch<= 'z'))
252 if ((*ch< 'A')||(*ch> 'Z'))
253 Error( "Wrong chain in the residue file");
257 NEW(*r,m, unsigned int);
259 out=fscanf(f, "%u",&v);
265 { MEM_DUP(*r,m, unsigned int); }
267 } while ((out==1)&&(out!=EOF));
269 fprintf(stderr, " Residues : %c",*ch);
271 fprintf(stderr, " %u",(*r)[i]);
272 fprintf(stderr, "\n");
278 unsigned int *nh, unsigned int **h1, unsigned int **h2, boolean **added,
284 unsigned int i,m,n,v;
300 NEW(*r,bw-> na, unsigned int);
302 for(i=0;i<bw-> na;i++)
306 out=fscanf(f1, "%u",&n);
308 Error( "Missmatch between the molecule and the rigid");
311 out=fscanf(f1, "%u",&v);
315 } while ((out==1)&&(out!=EOF));
320 for(i=0;i<bw-> na;i++)
324 if ((n==0)||((*r)[i]<n))
329 Error( "Wrong rigid information in ReadRigidsAndHinges");
334 for(i=0;i<bw-> na;i++)
344 NEW(*h1,m, unsigned int);
345 NEW(*h2,m, unsigned int);
346 NEW(*added,m, boolean);
348 out=fscanf(f2, "%u",&n);
351 out=fscanf(f2, "%u",&v);
380 } while ((out==1)&&(out!=EOF));
406 Error( "Too small molecule (only 2 atoms!)");
410 for(i=0;i<bw-> na;i++)
413 printf( "Atom %u [%g]-> ",i, VdWRadius(i,bw-> m));
454 fprintf(stderr, "Reading atom positions from : %s\n", GetFileFullName(&fatoms));
457 for(i=0;i<bw-> na;i++)
460 fscanf(f, "%lf",&(pos[l]));
467 for(i=0,j=0;i<bw-> na;i++,j+=3)
468 printf( "%g %g %g\n",pos[j],pos[j+1],pos[j+2]);
474 unsigned int i,n,k,l1,r,l;
484 for(i=0;i<bw-> na;i++)
520 if ((fix)||(bw-> nbAtom[l]==1))
555 unsigned int i,j,k,l1,lz,r,l,ar;
556 boolean fix,found,revolute,proline;
557 unsigned int *nID,*caID,*cID;
561 if ((nr== NO_UINT)||(rID==NULL))
562 Error( "Using DetectLinksAndJointsFromResidues with an empty list of residues");
567 if (rID[i-1]>=rID[i])
568 Error( "The residue identifiers must be sorted (increasing)");
577 for(i=0;i<bw-> na;i++)
583 NEW(nID,nr, unsigned int);
584 NEW(caID,nr, unsigned int);
585 NEW(cID,nr, unsigned int);
594 for(i=0;i<bw-> na;i++)
604 while((!found)&&(j<nr))
632 Error( "Undefined residue");
638 pos=&(bw-> pos[3*nID[0]]);
640 for(i=nID[0];i<=cID[nr-1];i++)
663 for(i=0;i<2*nr-1;i++)
708 revolute=(((r==caID[k])&&(l==nID[k]))||
709 ((r==caID[k])&&(l==cID[k])));
711 revolute=(((r==cID[k])&&(l==caID[k]))||
712 ((r==nID[k+1])&&(l==caID[k+1])));
749 for(i=0;i<bw-> na;i++)
767 unsigned int nh, unsigned int *h1, unsigned int *h2,
770 unsigned int i,j,k,l1,lz,r,l,m,nl;
771 boolean fix,found,stop;
774 if ((rg==NULL)||(nh== NO_UINT)||(nh==0)||(h1==NULL)||(h2==NULL))
775 Error( "Using DetectLinksAndJointsFromRigidsAndHinges with an empty list of residues");
783 for(i=0;i<bw-> na;i++)
792 for(i=0;i<bw->na;i++)
794 if ((rg[i]!= NO_UINT)&&(rg[i]>m)) m=rg[i];
802 while ((!found)&&(lz<bw->na))
812 Error( "Atom assigned to two different rigids");
817 for(j=lz+1;j<bw-> na;j++)
822 Error( "Atom assigned to two different rigids");
877 while((!stop)&&(k<nh))
879 stop=(((h1[k]==r)&&(h2[k]==l))||((h1[k]==l)&&(h2[k]==r)));
911 Error( "A link without atoms?");
955 for(i=0;i<bw-> nj;i++)
964 unsigned int l,i,j,k;
968 double x[3],y[3],z[3];
976 for(l=0;l<bw-> nl;l++)
1015 while ((!found)&&(i!= NO_UINT))
1018 while ((!found)&&(j!= NO_UINT))
1053 Error( "A link with no valid atom to define a reference frame");
1062 Error( "Inconsistency in BioWorld (Atoms2Transforms)");
1079 Error( "Inconsistency in BioWorld (Atoms2Transforms)");
1123 fprintf(stderr, "Link %u: [%u %u %u]\n",l,i,j,k);
1131 unsigned int maxAtomsLink, TBioWorld *bw)
1133 unsigned int rep,i,j,m,n;
1139 unsigned int k,l,nal;
1140 Tcolor defaultColor,carbon,sulphur,hydrogen,black,oxygen,nitrogen,red,green,blue,*atomColor;
1142 double **jointPoint;
1144 double radius,*atomPos,endPoint[3];
1148 for(i=0;i<bw-> na;i++)
1151 Error( "Unassigned atom to link in InitWorldFromMolecule (this atom can not be correctly moved)");
1160 for(i=0;i<bw-> nl;i++)
1165 for(i=0,l=0;i<bw-> na;i++,l+=3)
1175 NewColor(0.75,0.75,0.75,&defaultColor);
1187 for(i=0;i<bw-> nl;i++)
1190 sprintf(name, "link_%u",i);
1191 InitLink(name,0.0,NULL,NULL,&link);
1203 simple=((maxAtomsLink!= NO_UINT)&&(nal>=maxAtomsLink));
1228 atomColor=&hydrogen;
1234 atomColor=&nitrogen;
1243 atomColor=&defaultColor;
1335 NEW(jointPoint,4, double*);
1337 NEW(jointPoint[i],3, double);
1341 for(i=0;i<bw-> nj;i++)
1369 free(jointPoint[i]);
1387 for(i=0;i<bw-> nl;i++)
1402 unsigned int nh,*h1,*h2;
1409 fprintf(stderr, "Reading bio-info from : %s\n",filename);
1425 if ((r!=NULL)&&(h1!=NULL)&&(h1!=NULL)&&(added!=NULL))
1450 if ((r!=NULL)&&(h1!=NULL)&&(h1!=NULL)&&(added!=NULL))
1484 unsigned int i,j,l,n,nv,k;
1487 unsigned int vID[3],vID2[3],lID;
1488 unsigned int an1,an2,an3;
1500 NEW(vname,100, char);
1504 for(i=0;i<bw-> na;i++)
1513 sprintf(vname, "p_%u_%s",i,(j==0? "x":(j==1? "y": "z")));
1544 for(i=0;i<bw-> na;i++)
1554 s[k]=bw-> pos[3*l+j]-bw-> pos[3*i+j];
1557 sprintf(vname, "v_%u_%u_%s",i,l,(j==0? "x":(j==1? "y": "z")));
1603 sprintf(vname, "bl_%u_%u",an1,an2);
1605 sprintf(vname, "bl_%u_%u",an2,an1);
1652 for(i=0;i<bw-> na;i++)
1672 sprintf(vname, "v_%u_%u_%s",i,l,(j==0? "x":(j==1? "y": "z")));
1675 sprintf(vname, "v_%u_%u_%s",l,i,(j==0? "x":(j==1? "y": "z")));
1676 if (j==0) sgn*=-1.0;
1680 Error( "Unknow atom difference when fixing an angle bond");
1683 sprintf(vname, "v_%u_%u_%s",i,n,(j==0? "x":(j==1? "y": "z")));
1686 sprintf(vname, "v_%u_%u_%s",n,i,(j==0? "x":(j==1? "y": "z")));
1687 if (j==0) sgn*=-1.0;
1691 Error( "Unknow atom difference when fixing an angle bond");
1696 vID2[0],vID2[1],vID2[2],
1699 if ((an1<an2)&&(an1<an3))
1703 sprintf(vname, "ba_%u_%u_%u",an1,an2,an3);
1705 sprintf(vname, "ba_%u_%u_%u",an1,an3,an2);
1710 if ((an2<an1)&&(an2<an3))
1713 sprintf(vname, "ba_%u_%u_%u",an2,an1,an3);
1715 sprintf(vname, "ba_%u_%u_%u",an2,an3,an1);
1721 sprintf(vname, "ba_%u_%u_%u",an3,an1,an2);
1723 sprintf(vname, "ba_%u_%u_%u",an3,an2,an1);
1780 boolean *systemVars;
1782 fout=fopen( "geometry.cuik", "w");
1784 Error( "Could not open the file to store the geometry equations.");
1789 fout=fopen( "geometry.sol", "w");
1791 Error( "Could not open the file to store the initial approx.");
1792 NEW(varNames,k, char*);
1834 for(i=0;i<bw-> nl;i++)
1868 for(i=0,k=0;i<bw-> na;i++,k+=3)
1896 for(i=0;i<bw-> nl;i++)
1937 for(i=0;i<bw-> nl;i++)
|
Follow us!