GLYLIB  0.3.0b
index_utilities.c
Go to the documentation of this file.
00001 /** \file index_utilities.c
00002 *   Purpose:  Functions associated with internal addresses. 
00003 *   Begin 20110417 BLFoley
00004 * 
00005 */
00006 #include <mylib.h>
00007 #include <molecules.h>
00008 
00009 ensindex copy_moli_to_ensi(molindex moli){
00010   ensindex ensi;
00011   ensi.E=ensi.A=-1;
00012   ensi.i=moli.i;
00013   ensi.m=moli.m;
00014   ensi.r=moli.r;
00015   ensi.a=moli.a;
00016   return ensi;
00017   }
00018 
00019 char is_consistent_moli_moli(molindex mone, molindex mtwo){
00020   char answer='y';
00021   if(mone.i!=mtwo.i) answer='i';
00022   if(mone.m!=mtwo.m) answer='n';
00023   if(mone.r!=mtwo.r) answer='n';
00024   if(mone.a!=mtwo.a) answer='n';
00025   return answer;
00026   }
00027 
00028 char is_consistent_ensi_ensi(ensindex eone, ensindex etwo){
00029   char answer='y';
00030   if(eone.E!=etwo.E) answer='E';
00031   if(eone.A!=etwo.A) answer='A';
00032   if(eone.i!=etwo.i) answer='i';
00033   if(eone.m!=etwo.m) answer='n';
00034   if(eone.r!=etwo.r) answer='n';
00035   if(eone.a!=etwo.a) answer='n';
00036   return answer;
00037   }
00038 
00039 
00040 char is_consistent_molbond_molbond(molbond mb1, molbond mb2){
00041   char answer='y',type='\0';
00042 
00043   answer=is_consistent_moli_moli(mb1.s,mb2.s);
00044   if(answer=='n') return answer;
00045   answer=is_consistent_moli_moli(mb1.t,mb2.t);
00046   if(answer=='n') return answer;
00047 
00048   if(mb1.i!=mb2.i) answer='i';
00049   if(((mb1.typ==NULL)&&(mb2.typ!=NULL))||((mb1.typ!=NULL)&&(mb2.typ==NULL))) type='t';
00050   if((mb1.typ!=NULL)&&(mb2.typ!=NULL)) {if((&(mb1.typ[0]))!=(&(mb2.typ[0]))) type='t';}
00051   if(mb1.o!=mb2.o) type='t';
00052 
00053   if(type=='t')
00054     {
00055     if(answer=='i') answer='T';
00056     if(answer=='y') answer='t';
00057     }
00058   
00059   return answer;
00060   }
00061 char is_consistent_molbond_molbond_inverse(molbond mb1, molbond mb2){
00062   char answer='y',type='\0';
00063 
00064   answer=is_consistent_moli_moli(mb1.s,mb2.t);
00065   if(answer=='n') return answer;
00066   answer=is_consistent_moli_moli(mb1.t,mb2.s);
00067   if(answer=='n') return answer;
00068 
00069   if(mb1.i!=mb2.i) answer='i';
00070   if(((mb1.typ==NULL)&&(mb2.typ!=NULL))||((mb1.typ!=NULL)&&(mb2.typ==NULL))) type='t';
00071   if((mb1.typ!=NULL)&&(mb2.typ!=NULL)) {if((&(mb1.typ[0]))!=(&(mb2.typ[0]))) type='t';}
00072   if(mb1.o!=mb2.o) type='t';
00073 
00074   if(type=='t')
00075     {
00076     if(answer=='i') answer='T';
00077     if(answer=='y') answer='t';
00078     }
00079   
00080   return answer;
00081   }
00082 
00083 
00084 
00085 char is_consistent_ensi_moli(ensindex ensi, molindex moli){
00086 char answer='y';
00087 if(ensi.i!=moli.i) answer='i';
00088 if(ensi.m!=moli.m) answer='n';
00089 if(ensi.r!=moli.r) answer='n';
00090 if(ensi.a!=moli.a) answer='n';
00091 return answer;
00092 }
00093 void set_residue_molindexes(residue *r, int mi, int ri){
00094 int i;
00095 r[0].moli.i=-1;
00096 r[0].moli.m=mi;
00097 r[0].moli.r=ri;
00098 r[0].moli.a=-1;
00099 for(i=0;i<r[0].na;i++)
00100   {
00101   r[0].a[i].moli.i=-1;
00102   r[0].a[i].moli.m=mi;
00103   r[0].a[i].moli.r=ri;
00104   r[0].a[i].moli.a=i;
00105   }
00106 }
00107 void set_molecule_molindexes(molecule *m, int mi){
00108 int i;
00109 m[0].mi=mi;
00110 for(i=0;i<m[0].nr;i++)
00111   {
00112   set_residue_molindexes(&m[0].r[i],mi,i);
00113   }
00114 }
00115 void set_assembly_molindexes(assembly *A){
00116 int i;
00117 for(i=0;i<A[0].nm;i++)
00118   {
00119   set_molecule_molindexes(&A[0].m[i][0],i);
00120   }
00121 }
00122 void set_ensemble_molindexes(ensemble *E){
00123 int i;
00124 for(i=0;i<E[0].nm;i++)
00125   {
00126   set_molecule_molindexes(&E[0].m[i],i);
00127   }
00128 }
00129 
00130 
 All Classes Files Functions Variables Typedefs Defines