void AbstractTarget::Build(void) { Sizer(); Descriptor(); Allocator(); Vector(); VectorX(); Printer(); ShiftDipolesAndX(); PrepareIaniso(); PreparePyzd(); }
void RescaleVectorDWindow(WindowType theWindow, int *ms, int *me, int *ns, int *ne) { DataType data_Ptr = theWindow->data; LabelType label_Ptr = theWindow->label; int i,m,n,mstart,mend,nstart,nend; m = *(data_Ptr->mpoints); n = *(data_Ptr->npoints); /****************************/ /* AutoRescaling the x-axis */ if (Is_X_AutoRescale(theWindow)) { if (n) { mstart = 0; mend = m - 1; label_Ptr->X_Max = label_Ptr->X_Min = VectorX(data_Ptr,0); for (i = 1; i < m; i++) { label_Ptr->X_Max = max(label_Ptr->X_Max, VectorX(data_Ptr,i)); label_Ptr->X_Min = min(label_Ptr->X_Min, VectorX(data_Ptr,i)); } } label_Ptr->X_Max *= label_Ptr->X_Scale; label_Ptr->X_Min *= label_Ptr->X_Scale; } else { mstart = 0; while (VectorX(data_Ptr,mstart) * label_Ptr->X_Scale < label_Ptr->X_Min - DBL_MIN) mstart++; mend = m - 1; while (VectorX(data_Ptr,mend) * label_Ptr->X_Scale > label_Ptr->X_Max + DBL_MIN) mend--; } /****************************/ /* AutoRescaling the y-axis */ if (Is_Y_AutoRescale(theWindow)) { if (m) { nstart = 0; nend = n - 1; label_Ptr->Y_Max = label_Ptr->Y_Min = VectorY(data_Ptr,0); for (i = 1; i < n; i++) { label_Ptr->Y_Max = max(label_Ptr->Y_Max, VectorY(data_Ptr,i)); label_Ptr->Y_Min = min(label_Ptr->Y_Min, VectorY(data_Ptr,i)); } } label_Ptr->Y_Max *= label_Ptr->Y_Scale; label_Ptr->Y_Min *= label_Ptr->Y_Scale; } else { nstart = 0; while (VectorY(data_Ptr,nstart) * label_Ptr->Y_Scale < label_Ptr->Y_Min - DBL_MIN) nstart++; nend = n - 1; while (VectorY(data_Ptr,nend) * label_Ptr->Y_Scale > label_Ptr->Y_Max + DBL_MIN) nend--; } *ms = mstart; *me = mend; *ns = nstart; *ne = nend; }
void Confounder(){ bTrack *confdr=new bTrack(); if(confFile==0) confFile=strdup("confounder"); confdr->trackType=BED_GRAPH; confdr->hasCompl=0; confdr->name=confFile; confdr->initProfile(); VectorX v=VectorX(); VectorX cnf=VectorX(); FILE *f; char b[4096]; for(int i=0; i<nfiles; i++){ cnf.v[i]=eVectors->get(i,0); } verb("\n"); if(verbose) {verb("confounder: "); cnf.print(stdout);} double min=1.e+100, max=-1.e+100, e=0; int nn=0; int na0=0; verb("Make Confounder...\n"); for(int i=0; i<profileLength; i++){ if(i%1000000 ==0) verb("%5.1f%%\r",1.*i/profileLength*100); v.get(i); if(v.v[0]==NA) na0++; double w=v.scalar(cnf); if(w==NA){ fProfile->set(i,w); continue; } fProfile->set(i,w); //finProfile will divide by bisize e+=w; nn++; if(w<min) min=w; if(w>max) max=w; } verb("\n"); e/=nn; if(e < 0){ min=1.e+100; max=-1.e+100; e=0; for(int i=0; i<profileLength; i++){ double w=fProfile->get(i); if(w==NA) continue; fProfile->set(i,(w=-w)); e+=w; if(w<min) min=w; if(w>max) max=w; } } //================================================ Norm confdr->finProfile(); //=================================================== Write wig makeFileName(b,trackPath, confFile, BGR_EXT); f=gopen(b,"wt"); fprintf(f,"track type=bedGraph name=\"%s\" ", confFile); fprintf(f,"description=\"confounder\" \n"); for(int i=0; i<nfiles; i++){ fprintf(f,"#%s\n",files[i].fname); } verb("Write confounder profile...\n"); writeBedGr(f,fProfile); verb("\n"); fclose(f); confdr->writeProfilePrm(); confdr->writeByteProfile(); del(fProfile); fProfile=0; del(confdr); }