//___________________________________________________________________________________ void ReadTT_timestamps(char* fn, int nSpikes, double *t) { double t0; double wv0[128]; // open file FILE *fp = fopen(fn, "rb"); if (!fp) mexErrMsgTxt("ERROR: Could not open file."); // skip header int new_NT_format = SkipHeader(fp); // flag for new NT_format TT files (0=old SUN, 1=new NT) if (!new_NT_format) mexErrMsgTxt("Old sun format not supported by this loading engine."); SkipCheetahNTHeader(fp); // Skip standard Neuralynx header if present (Cheetah versions >= 1.3) long postHeaderPos = ftell(fp); // read records and convert all to double fseek(fp, postHeaderPos, SEEK_SET); for (int i = 0; i < nSpikes; i++) { GetOneRecord(fp,t0,wv0); t[i] = t0; } fclose(fp); }
//___________________________________________________________________________________ int GetNumberOfSpikes(char* fn) { // open file FILE* fp = fopen(fn, "rb"); if (!fp) mexErrMsgTxt("Could not open file."); //skip header and determine file record size int new_NT_format = SkipHeader(fp); if (!new_NT_format) mexErrMsgTxt("Old SunOS formats are not supported by this loading engine."); SkipCheetahNTHeader(fp); // Skip standard Neuralynx header if present (Cheetah versions >= 1.3) // get filesize int postHeaderPos = ftell(fp); // beginnig of file after header (if any) fseek(fp,0,2); // goto end of file int nbytes = ftell(fp) - postHeaderPos; int nSpikes = nbytes/recSize; // no need to skip last record for NT_cheetah files mexPrintf("Reading file %s:\nRecordSize = %d, %d spikes, %d bytes.\n", fn, recSize, nSpikes, nbytes); // cleanup fclose(fp); return nSpikes; }
//_________________________________________________________________________________________________ void ReadTTByRecord(char* fn, double *records_to_get, int n_records_to_get, double *t, double *wv) // Open the file and fseek to just those record number passed in // in the array: records_to_get. The last record of records to get // indicates the end of records. It's code is END_OF_RECORDS. { int i = 0; double t0; double wv0[128]; // open file FILE *fp = fopen(fn, "rb"); if (!fp) mexErrMsgTxt("ERROR: Could not open file."); // skip header int new_NT_format = SkipHeader(fp); // flag for new NT_format TT files (0=old SUN, 1=new NT) if (!new_NT_format) mexErrMsgTxt("Old sun format not supported by this loading engine."); SkipCheetahNTHeader(fp); // Skip standard Neuralynx header if present (Cheetah versions >= 1.3) long postHeaderPos = ftell(fp); // read records and convert all to double while(i < n_records_to_get) { // Go directly to the record in question. Do not pass go. NO $200. fseek(fp, postHeaderPos+sizeof(char)*(recSize)*((long)records_to_get[i] - 1), SEEK_SET); GetOneRecord(fp,t0,wv0); t[i] = t0; for (int j = 0; j<4; j++) for(int k = 0; k<32; k++) wv[i + n_records_to_get*j + n_records_to_get*4*k] = (double) wv0[j + 4*k]; i++; } fclose(fp); }
ln = lat->lnodes; ln->word = wd; ln->n=0; ln->v=0; ln = lat->lnodes+1; ln->word = wd; ln->n=0; ln->v=0; ln = lat->lnodes+nNode-1; ln->word = wd; ln->n=0; ln->v=0; ln = lat->lnodes+nNode-2; ln->word = wd; ln->n=0; ln->v=0; ln = lat->lnodes+2; for (i = 0; i< VHASHSIZE; i++) for ( wd = voc->wtab[i]; wd != NULL; wd = wd->next ) if ((wd != voc->nullWord) && (wd != voc->subLatWord)) { ln->word = wd; ln++; } la =lat->larcs; la->start = lat->lnodes; la->end = lat->lnodes+1; la->lmlike = 0.0; la = lat->larcs+1; la->start = lat->lnodes+nNode-2; la->end = lat->lnodes+nNode-1; la->lmlike = 0.0; la = lat->larcs+2; la->start = lat->lnodes+nNode-2; la->end = lat->lnodes+1; la->lmlike = 0.0; la = lat->larcs+3; for (i = 0; i < voc->nwords; i++) { la->start = lat->lnodes+1;