void cLibsvmSink::fetchConfig() { cDataSink::fetchConfig(); filename = getStr("filename"); SMILE_DBG(3,"filename = '%s'",filename); lag = getInt("lag"); SMILE_DBG(3,"lag = %i",lag); append = getInt("append"); if (append) { SMILE_DBG(3,"append to file is enabled"); } timestamp = getInt("timestamp"); if (append) { SMILE_DBG(3,"printing timestamp attribute (index 1) enabled"); } instanceBase = getStr("instanceBase"); SMILE_DBG(3,"instanceBase = '%s'",instanceBase); instanceName = getStr("instanceName"); SMILE_DBG(3,"instanceName = '%s'",instanceName); int i; nClasses = getArraySize("class"); classname = (char**)calloc(1,sizeof(char*)*nClasses); for (i=0; i<nClasses; i++) { const char *tmp = getStr_f(myvprint("class[%i]",i)); if (tmp!=NULL) classname[i] = strdup(tmp); } if (isSet("targetNumAll")) { targetNumAll = getInt("targetNumAll"); } if (isSet("targetStrAll")) { if (nClasses <=0) COMP_ERR("cannt have 'targetStrAll' option if no class names have been defined using the 'class' option! (inst '%s')",getInstName()); targetNumAll = getClassIndex(getStr("targetStrAll")); } nInst = getArraySize("targetNum"); if (nInst > 0) { target = (int *)calloc(1,sizeof(int)*nInst); for (i=0; i<nInst; i++) { target[i] = getInt_f(myvprint("targetNum[%i]",i)); if (target[i] < 0) COMP_ERR("invalid class index %i for instance %i (in 'targetNum' option of instance '%s')",target[i],i,getInstName()); } } else { nInst = getArraySize("targetStr"); if (nInst > 0) { if (nClasses <=0) COMP_ERR("cannt have 'targetStr' option if no class names have been defined using the 'class' option! (inst '%s')",getInstName()); target = (int *)calloc(1,sizeof(int)*nInst); for (i=0; i<nInst; i++) { target[i] = getClassIndex(getStr_f(myvprint("targetStr[%i]",i))); if (target[i] < 0) COMP_ERR("invalid class index %i for instance %i (from class '%s' in 'targetStr' option of instance '%s')",target[i],i,getStr_f(myvprint("targetStr[%i]",i)),getInstName()); } } else { nInst = 0; } } }
int cFunctionalsVecToVec::myConfigureInstance() { int i,j; cComponentManager *_compman = getCompMan(); if (_compman != NULL) { int nTp = _compman->getNtypes(); nFunctTp = 0; for (i=0; i<nTp; i++) { const char * tp = _compman->getComponentType(i,1); if (tp!=NULL) { if (!strncmp(tp,"cFunctional",11)&&strcmp(tp,COMPONENT_NAME_CFUNCTIONALSVECTOVEC)) { // find beginning "cFunctional" but not our own type (cFunctinals) const char *fn = tp+11; if (nFunctTpAlloc == nFunctTp) { // realloc: functTp = (char **)crealloc( functTp, sizeof(char*)*(nFunctTpAlloc+N_BLOCK_ALLOC), nFunctTpAlloc ); functTpI = (int *)crealloc( functTpI, sizeof(int)*(nFunctTpAlloc+N_BLOCK_ALLOC), nFunctTpAlloc ); functI = (int *)crealloc( functI, sizeof(int)*(nFunctTpAlloc+N_BLOCK_ALLOC), nFunctTpAlloc ); functN = (int *)crealloc( functN, sizeof(int)*(nFunctTpAlloc+N_BLOCK_ALLOC), nFunctTpAlloc ); functObj = (cFunctionalComponent **)crealloc( functObj, sizeof(cFunctionalComponent *)*(nFunctTpAlloc+N_BLOCK_ALLOC), nFunctTpAlloc ); nFunctTpAlloc += N_BLOCK_ALLOC; } functTp[nFunctTp] = strdup(fn); functTpI[nFunctTp] = i; nFunctTp++; } } } } SMILE_DBG(2,"(inst '%s') found %i cFunctionalXXXX component types.",getInstName(),nFunctTp); // fetch enabled functionals list nFunctionalsEnabled = getArraySize("functionalsEnabled"); nFunctValues = 0; requireSorted = 0; for (i=0; i<nFunctionalsEnabled; i++) { const char *fname = getStr_f(myvprint("functionalsEnabled[%i]",i)); char *tpname = myvprint("cFunctional%s",fname); for (j=0; j<nFunctTp; j++) { if (!strcmp(functTp[j],fname)) { functI[i] = j; break; } } // TODO: find duplicates in functionalsEnabled Array!!! if (j<nFunctTp) { // and create corresponding component instances... SMILE_DBG(3,"(inst '%s') creating Functional object 'cFunctional%s'.",fname); char *_tmp = myvprint("%s.%s",getInstName(),fname); cFunctionalComponent * tmp = (cFunctionalComponent *)(_compman->createComponent)(_tmp,tpname); free(_tmp); if (tmp==NULL) OUT_OF_MEMORY; tmp->setComponentEnvironment(_compman, -1, this); functN[i] = tmp->getNoutputValues(); requireSorted += tmp->getRequireSorted(); nFunctValues += functN[i]; functObj[i] = tmp; //functTp[i] = strdup(fname); } else { SMILE_ERR(1,"(inst '%s') Functional object '%s' specified in 'functionalsEnabled' array, however no type 'cFunctional%s' exists!",getInstName(),fname,fname); functObj[i] = NULL; functN[i] = 0; free(tpname); return 0; //functTp[i] = NULL; } free(tpname); } if (requireSorted) SMILE_DBG(2,"%i Functional components require sorted data.",requireSorted); return cVectorProcessor::myConfigureInstance(); }
void cArffSink::fetchConfig() { cDataSink::fetchConfig(); filename = getStr("filename"); if (filename == NULL || *filename == 0 || (*filename == '?' && *(filename+1) == 0)) { SMILE_IMSG(2, "No filename given, disabling this sink component."); disabledSink_ = true; errorOnNoOutput_ = 0; } lag = getInt("lag"); SMILE_IDBG(3,"lag = %i",lag); append = getInt("append"); if (append) { SMILE_IDBG(3,"append to file is enabled"); } printDefaultClassDummyAttribute = getInt("printDefaultClassDummyAttribute"); if (isSet("frameTime")) timestamp = getInt("frameTime"); else timestamp = getInt("timestamp"); if (timestamp) { SMILE_IDBG(3,"printing timestamp attribute enabled"); } if (isSet("frameIndex")) number = getInt("frameIndex"); else number = getInt("number"); if (number) { SMILE_IDBG(3,"printing instance number (=frame number) attribute enabled"); } frameLength = getInt("frameLength"); relation = getStr("relation"); SMILE_IDBG(3,"ARFF relation = '%s'",relation); instanceBase = getStr("instanceBase"); SMILE_IDBG(3,"instanceBase = '%s'",instanceBase); instanceName = getStr("instanceName"); SMILE_IDBG(3,"instanceName = '%s'",instanceName); int i; nClasses = getArraySize("class"); //printf("nclasses: %i\n", nClasses); classname = (char**)calloc(1,sizeof(char*)*nClasses); classtype = (char**)calloc(1,sizeof(char*)*nClasses); for (i=0; i<nClasses; i++) { const char *tmp = getStr_f(myvprint("class[%i].name",i)); if (tmp!=NULL) classname[i] = strdup(tmp); tmp = getStr_f(myvprint("class[%i].type",i)); if (tmp!=NULL) classtype[i] = strdup(tmp); } /* ConfigType * classType = new ConfigType("arffClass"); classType->setField("name", "name of target", "class"); classType->setField("type", "numeric, or nominal (= list of classes)", "numeric"); ct->setField("class","definition of class target attributes (array for multiple targets/classes)", classType, ARRAY_TYPE); ConfigType * targetType = new ConfigType("arffTarget"); targetType->setField("instance", "array containing targets for each instance", 0,ARRAY_TYPE); targetType->setField("all", "one common target for all processed instances", 0); */ if (getArraySize("target") != nClasses) { SMILE_ERR(1,"number of targets (%i) is != number of class attributes (%i)!",getArraySize("target"),nClasses); } else { targetall = (char**)calloc(1,sizeof(char*)*nClasses); targetinst = (char***)calloc(1,sizeof(char**)*nClasses); nInst = -2; for (i=0; i<nClasses; i++) { char *tmp = myvprint("target[%i].instance",i); const char *t = getStr_f(myvprint("target[%i].all",i)); if (t!=NULL) targetall[i] = strdup(t); long ni = getArraySize(tmp); if (nInst==-2) nInst = ni; // -1 if no array else { if (nInst != ni) COMP_ERR("number of instances in target[].instance array is not constant among all targets! %i <> %i",nInst,ni); } int j; if (nInst > 0) { targetinst[i] = (char**)calloc(1,sizeof(char*)*nInst); for (j=0; j<nInst; j++) { t = getStr_f(myvprint("%s[%i]",tmp,j)); if (t!=NULL) targetinst[i][j] = strdup(t); } } free(tmp); } } instanceNameFromMetadata = getInt("instanceNameFromMetadata"); SMILE_IDBG(2,"instanceNameFromMetadata = %i",instanceNameFromMetadata); useTargetsFromMetadata = getInt("useTargetsFromMetadata"); SMILE_IDBG(2,"useTargetsFromMetadata = %i",useTargetsFromMetadata); frameTimeAdd= getDouble("frameTimeAdd"); // ct->setField("target","targets (classes) for each target (class) attribute",targetType,ARRAY_TYPE); }