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); }
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; }
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; }