Download scripts/stride/contact_order.c from OneScience-Group/Chainsaw: direct link, hf CLI and curl.
- Browser
- Download file 1.93 kB
-
https://huggingface.co/OneScience-Group/Chainsaw/resolve/main/scripts/stride/contact_order.c
- Command line
-
hf download hf://OneScience-Group/Chainsaw/scripts/stride/contact_order.c
-
curl -L -o contact_order.c https://huggingface.co/OneScience-Group/Chainsaw/resolve/main/scripts/stride/contact_order.c
1.93 kB
| void ContactOrder(CHAIN **Chain, int NChain, COMMAND *Cmd ) | |
| { | |
| register int Res1, Res2, At1, At2; | |
| int Cn, From, To, NumberOfContacts; | |
| char PDB_Start[RES_FIELD], PDB_End[RES_FIELD]; | |
| double CO; | |
| for( Cn=0; Cn<NChain; Cn++ ) { | |
| if( !Chain[Cn]->Valid ) | |
| continue; | |
| NumberOfContacts = 0; | |
| CO = 0.0; | |
| if( !strcmp(Cmd->FirstResidue,"") ) { | |
| From = 0; | |
| strcpy(PDB_Start,Chain[Cn]->Rsd[0]->PDB_ResNumb); | |
| } | |
| else { | |
| if( !PdbN2SeqN(Chain[Cn],Cmd->FirstResidue,&From) ) { | |
| fprintf(stderr,"Residue %s does not exist in %s chain %c\n", | |
| Cmd->FirstResidue,Chain[Cn]->PdbIdent,SpaceToDash(Chain[Cn]->Id)); | |
| exit(1); | |
| } | |
| strcpy(PDB_Start,Cmd->FirstResidue); | |
| } | |
| if( !strcmp(Cmd->LastResidue,"") ) { | |
| To = Chain[Cn]->NRes; | |
| strcpy(PDB_End,Chain[Cn]->Rsd[Chain[Cn]->NRes-1]->PDB_ResNumb); | |
| } | |
| else { | |
| if( !PdbN2SeqN(Chain[Cn],Cmd->LastResidue,&To) ) { | |
| fprintf(stderr,"Residue %s does not exist in %s chain %c\n", | |
| Cmd->LastResidue,Chain[Cn]->PdbIdent,SpaceToDash(Chain[Cn]->Id)); | |
| exit(1); | |
| } | |
| strcpy(PDB_End,Cmd->LastResidue); | |
| } | |
| for( Res1=From; Res1<To-1; Res1++ ) { | |
| for( At1=0; At1<Chain[Cn]->Rsd[Res1]->NAtom; At1++ ) { | |
| if( !strcmp(Chain[Cn]->Rsd[Res1]->AtomType[At1],"H") ) | |
| continue; | |
| for( Res2 = Res1+1; Res2<To; Res2++ ) { | |
| for( At2=0; At2<Chain[Cn]->Rsd[Res2]->NAtom; At2++ ) { | |
| if( !strcmp(Chain[Cn]->Rsd[Res2]->AtomType[At2],"H") ) | |
| continue; | |
| if( Dist(Chain[Cn]->Rsd[Res1]->Coord[At1], | |
| Chain[Cn]->Rsd[Res2]->Coord[At2]) < CO_DIST) { | |
| CO += abs(Res1-Res2); | |
| NumberOfContacts++; | |
| } | |
| } | |
| } | |
| } | |
| } | |
| CO = 100.0*CO/NumberOfContacts; | |
| CO /= (To-From+1); | |
| printf("%s %c %d ( %s ) %d ( %s ) %5.1f\n", | |
| Chain[Cn]->PdbIdent,SpaceToDash(Chain[Cn]->Id),From,PDB_Start,To-1,PDB_End,CO); | |
| } | |
| exit(0); | |
| } | |