static gmx_bool pdb_next_x(t_trxstatus *status, FILE *fp, t_trxframe *fr) { t_atoms atoms; t_symtab *symtab; matrix boxpdb; // Initiate model_nr to -1 rather than NOTSET. // It is not worthwhile introducing extra variables in the // read_pdbfile call to verify that a model_nr was read. int ePBC, model_nr = -1, na; char title[STRLEN], *time, *step; double dbl; atoms.nr = fr->natoms; atoms.atom = nullptr; atoms.pdbinfo = nullptr; /* the other pointers in atoms should not be accessed if these are NULL */ snew(symtab, 1); open_symtab(symtab); na = read_pdbfile(fp, title, &model_nr, &atoms, symtab, fr->x, &ePBC, boxpdb, TRUE, nullptr); free_symtab(symtab); sfree(symtab); set_trxframe_ePBC(fr, ePBC); if (nframes_read(status) == 0) { fprintf(stderr, " '%s', %d atoms\n", title, fr->natoms); } fr->bPrec = TRUE; fr->prec = 10000; fr->bX = TRUE; fr->bBox = (boxpdb[XX][XX] != 0.0); if (fr->bBox) { copy_mat(boxpdb, fr->box); } fr->step = 0; step = std::strstr(title, " step= "); fr->bStep = ((step != nullptr) && sscanf(step+7, "%" SCNd64, &fr->step) == 1); dbl = 0.0; time = std::strstr(title, " t= "); fr->bTime = ((time != nullptr) && sscanf(time+4, "%lf", &dbl) == 1); fr->time = dbl; if (na == 0) { return FALSE; } else { if (na != fr->natoms) { gmx_fatal(FARGS, "Number of atoms in pdb frame %d is %d instead of %d", nframes_read(status), na, fr->natoms); } return TRUE; } }
void gmx_pdb_read_conf(const char *infile, t_topology *top, rvec x[], int *ePBC, matrix box) { FILE *in = gmx_fio_fopen(infile, "r"); char title[STRLEN]; read_pdbfile(in, title, NULL, &top->atoms, &top->symtab, x, ePBC, box, TRUE, NULL); top->name = put_symtab(&top->symtab, title); gmx_fio_fclose(in); }
void read_pdb_conf(char *infile,char *title, t_atoms *atoms,rvec x[],int *ePBC,matrix box,bool bChange, gmx_conect conect) { FILE *in; in = gmx_fio_fopen(infile,"r"); read_pdbfile(in,title,NULL,atoms,x,ePBC,box,bChange,conect); gmx_fio_fclose(in); }
void gmx_pdb_read_conf(const char *infile, t_symtab *symtab, char ***name, t_atoms *atoms, rvec x[], int *ePBC, matrix box) { FILE *in = gmx_fio_fopen(infile, "r"); char title[STRLEN]; read_pdbfile(in, title, NULL, atoms, symtab, x, ePBC, box, TRUE, NULL); *name = put_symtab(symtab, title); gmx_fio_fclose(in); }
static gmx_bool pdb_next_x(t_trxstatus *status, FILE *fp,t_trxframe *fr) { t_atoms atoms; matrix boxpdb; int ePBC,model_nr,na; char title[STRLEN],*time; double dbl; atoms.nr = fr->natoms; atoms.atom=NULL; atoms.pdbinfo=NULL; /* the other pointers in atoms should not be accessed if these are NULL */ model_nr=NOTSET; na=read_pdbfile(fp,title,&model_nr,&atoms,fr->x,&ePBC,boxpdb,TRUE,NULL); set_trxframe_ePBC(fr,ePBC); if (nframes_read(status)==0) fprintf(stderr," '%s', %d atoms\n",title, fr->natoms); fr->bPrec = TRUE; fr->prec = 10000; fr->bX = TRUE; fr->bBox = (boxpdb[XX][XX] != 0.0); if (fr->bBox) { copy_mat(boxpdb,fr->box); } if (model_nr!=NOTSET) { fr->bStep = TRUE; fr->step = model_nr; } time=strstr(title," t= "); if (time) { fr->bTime = TRUE; sscanf(time+4,"%lf",&dbl); fr->time=(real)dbl; } else { fr->bTime = FALSE; /* this is a bit dirty, but it will work: if no time is read from comment line in pdb file, set time to current frame number */ if (fr->bStep) fr->time=(real)fr->step; else fr->time=(real)nframes_read(status); } if (na == 0) { return FALSE; } else { if (na != fr->natoms) gmx_fatal(FARGS,"Number of atoms in pdb frame %d is %d instead of %d", nframes_read(status),na,fr->natoms); return TRUE; } }
static gmx_bool pdb_next_x(t_trxstatus *status, FILE *fp, t_trxframe *fr) { t_atoms atoms; t_symtab *symtab; matrix boxpdb; // Initiate model_nr to -1 rather than NOTSET. // It is not worthwhile introducing extra variables in the // read_pdbfile call to verify that a model_nr was read. int ePBC, model_nr = -1, na; char title[STRLEN], *time; double dbl; atoms.nr = fr->natoms; atoms.atom = NULL; atoms.pdbinfo = NULL; /* the other pointers in atoms should not be accessed if these are NULL */ snew(symtab, 1); open_symtab(symtab); na = read_pdbfile(fp, title, &model_nr, &atoms, symtab, fr->x, &ePBC, boxpdb, TRUE, NULL); free_symtab(symtab); sfree(symtab); set_trxframe_ePBC(fr, ePBC); if (nframes_read(status) == 0) { fprintf(stderr, " '%s', %d atoms\n", title, fr->natoms); } fr->bPrec = TRUE; fr->prec = 10000; fr->bX = TRUE; fr->bBox = (boxpdb[XX][XX] != 0.0); if (fr->bBox) { copy_mat(boxpdb, fr->box); } if (model_nr != -1) { fr->bStep = TRUE; fr->step = model_nr; } time = std::strstr(title, " t= "); if (time) { fr->bTime = TRUE; sscanf(time+4, "%lf", &dbl); fr->time = (real)dbl; } else { fr->bTime = FALSE; /* this is a bit dirty, but it will work: if no time is read from comment line in pdb file, set time to current frame number */ if (fr->bStep) { fr->time = (real)fr->step; } else { fr->time = (real)nframes_read(status); } } if (na == 0) { return FALSE; } else { if (na != fr->natoms) { gmx_fatal(FARGS, "Number of atoms in pdb frame %d is %d instead of %d", nframes_read(status), na, fr->natoms); } return TRUE; } }