# include "fit.h" int EquivSelectCA(file_records *f1, file_records *f2, TokenizeData *d) { int nsel = 0; while ((TokenizeLine(d) != NULL) && !(StrEq(d->T[1],"{"))) ; FlagOnEverywhere(f1,FLAG_1_DESELECT|FLAG_2_DESELECT); FlagOnEverywhere(f2,FLAG_1_DESELECT|FLAG_2_DESELECT); while ((TokenizeLine(d) != NULL) && !(StrEq(d->T[1],"}"))) { int r1 = d->D[1] ; int r2 = d->D[2] ; residue_record * r; { r=f1->FirstResidue ; while (r1 != r->number) { r=r->next ; if (r == NULL) { STDERR("r == NULL ; You are reaching into the void for structure 1."); exit(1); } } SWITCH_OFF(r->ca,IGNORE_ATOM); SWITCH_OFF(r->ca,DONT_CALCULATE_ATOM); } { r=f2->FirstResidue ; while (r2 != r->number) { r=r->next ; if (r == NULL) { STDERR("r == NULL ; You are reaching into the void for structure 2."); exit(1); } } SWITCH_OFF(r->ca,IGNORE_ATOM); SWITCH_OFF(r->ca,DONT_CALCULATE_ATOM); } nsel++ ; fprintf(stderr,"Equivalenced CA %3d: %-4d %-4d\n",nsel,r1,r2); } return nsel ; } int NSelectCA(file_records * f, TokenizeData *d) { int nsel = 0; while ((TokenizeLine(d) != NULL) && !(StrEq(d->T[1],"{"))) ; FlagOnEverywhere(f,FLAG_1_DESELECT|FLAG_2_DESELECT); while ((TokenizeLine(d) != NULL) && !(StrEq(d->T[1],"}"))) { int from = d->D[1] ; int to = d->D[2] ; char chain = (StrEq(d->T[3],"-") || d->T[3] == NULL ? ' ' : d->T[3][0]); residue_record * r; fprintf(stderr," : %c%-4d - %c%-4d\n",chain,from,chain,to); for (r=f->FirstResidue ; r != NULL ; r=r->next) if (chain == r->chain && from <= r->number && r->number <= to) { SWITCH_OFF(r->ca,IGNORE_ATOM); SWITCH_OFF(r->ca,DONT_CALCULATE_ATOM); nsel++ ; } } return nsel ; } void SelectCA(file_records * f, TokenizeData *d) { while ((TokenizeLine(d) != NULL) && !(StrEq(d->T[1],"{"))) ; DeselectFile(f); while ((TokenizeLine(d) != NULL) && !(StrEq(d->T[1],"}"))) { int from = d->D[1] ; int to = d->D[2] ; char chain = (StrEq(d->T[3],"_") || d->T[3] == NULL ? ' ' : d->T[3][0]); residue_record * r; fprintf(stderr," : %c%-4d - %c%-4d\n",chain,from,chain,to); for (r=f->FirstResidue ; r != NULL ; r=r->next) if (chain == r->chain && from <= r->number && r->number <= to) { SWITCH_OFF(r->ca,IGNORE_ATOM); SWITCH_OFF(r->ca,DONT_CALCULATE_ATOM); # ifdef OFF write_pdb_record(stdout,r->ca,0); # endif } } }