Esempio n. 1
0
CFactorGraph CompressInterface::createCFactorGraph() {

	createVarClustering();
	createFacClustering();

	// create lifted fg here
	vector<CFactor> superFacs;

	// clusterIdx => facIdx
	for (map<size_t,size_t>::iterator facIter = _facRepr.begin(); facIter != _facRepr.end(); facIter++) {
		VarSet superVarSet;

		foreach (const dai::BipartiteGraph::Neighbor &tmpVar, _cfg.nbF(facIter->second)) {
			Var varCluster = _varRepr[_varColorVec[tmpVar]];
			if (!superVarSet.contains(varCluster)) {
				superVarSet |= Var(varCluster);
			}
		}

		CFactor superFac = CFactor(superVarSet, _cfg.factor(facIter->second).p());
		superFac.sigma() = _cfg.factor(facIter->second).sigma();
		superFac.position() = _cfg.factor(facIter->second).position();

		superFac.counts() = createCounts(facIter->second, superVarSet);
		superFacs.push_back(superFac);
	}

	return CFactorGraph(superFacs);
}
Esempio n. 2
0
counts_t * countFile(const char * filename, kvarray_t * kvPairs) {
  
  counts_t *c = createCounts();
  FILE *f = fopen(filename,"r");
  if(f==NULL)
    {
      fprintf(stderr,"Couldn't open File!");
      return NULL;
    }
  char *line=NULL;
    char *value=NULL;
    size_t num=0;
    char *temp=NULL;
  while(getline(&line,&num,f)!=-1)
    {
      temp=strchr(line,'\n');
      *temp='\0';
      value=lookupValue(kvPairs,line);
      addCount(c,value);
      free(line);
      value=NULL;
      temp=NULL;
      //      free(temp);
      num=0;
    }
  // free(value);
  free(line);   
  if(fclose(f)!=0)
    {
      fprintf(stderr,"Couldn't close file!");
    return NULL;
    }
  return c;
}
Esempio n. 3
0
File: main.c Progetto: jvm3487/C
counts_t * countFile(const char * filename, kvarray_t * kvPairs) {
  //WRITE ME
  counts_t * c = createCounts();
  FILE * f = fopen(filename,"r");
  char * line = NULL;
  size_t sz = 0;
  while(getline(&line, &sz, f) >= 0) {
    char * ptr = strchr(line, '\n');
    if (ptr != NULL) {
      *ptr = '\0';
    }
    char * value = lookupValue(kvPairs, line);
    addCount(c, value);
  }
  fclose(f);
  free(line);
  return c;
}