Beispiel #1
0
void AbstractTarget::Build(void)
{
	Sizer();
	Descriptor();
	Allocator();
	Vector();
	VectorX();
	Printer();
	ShiftDipolesAndX();
	PrepareIaniso();
	PreparePyzd();
}
Beispiel #2
0
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;
}
Beispiel #3
0
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);
}