package tr.gov.ulakbim.jDenetX.core; /* * Created by IntelliJ IDEA. * User: caglar * Date: Sep 2, 2010 * Time: 2:47:04 PM * To change this template use File | Settings | File Templates. */ import tr.gov.ulakbim.jDenetX.AbstractMOAObject; import weka.core.Attribute; import weka.core.Instance; import weka.core.Instances; import java.util.ArrayList; public class InstanceClassesPool extends AbstractMOAObject { public Instances[] InstancesClassPool = null; private static int NoOfClasses = 0; private static int Size = 0; public InstanceClassesPool() { } public InstanceClassesPool(int noOfClasses, ArrayList<Attribute> attList, int winSize) { NoOfClasses = noOfClasses; InstancesClassPool = new Instances[noOfClasses]; Size = 0; for (int i = 0; i < noOfClasses; i++) { InstancesClassPool[i] = new Instances("classList", attList, winSize); InstancesClassPool[i].setClassIndex(attList.size() - 1); } } public boolean isInitialized() { boolean rtnVal = false; if (InstancesClassPool != null && NoOfClasses > 0 && (InstancesClassPool.length == NoOfClasses)) { rtnVal = true; } return rtnVal; } public void initialize(int noOfClasses, ArrayList<Attribute> attList, int winSize) { NoOfClasses = noOfClasses; InstancesClassPool = new Instances[noOfClasses]; Size = 0; for (int i = 0; i < noOfClasses; i++) { InstancesClassPool[i] = new Instances("classList", attList, winSize); InstancesClassPool[i].setClassIndex(attList.size() - 1); } } public int getNoOfClasses() { return NoOfClasses; } public void setNoOfClasses(int noOfClasses) { NoOfClasses = noOfClasses; } public void addInstance(Instance inst) { if (InstancesClassPool != null) { InstancesClassPool[(int) inst.classValue()].add(inst); //InstancesClassPool[(int)inst.classValue()].setClassIndex(inst.classIndex()); Size++; } } public void addInstances(Instances insts, int class_) { if (InstancesClassPool != null) { InstancesClassPool[class_].addAll(insts); Size += insts.size(); } } public void setInstancesToClass(int class_, Instances instances) { if (InstancesClassPool[class_] != null) { Size -= InstancesClassPool[class_].size(); } InstancesClassPool[class_] = instances; Size += instances.size(); } public void addInstancesToPool(Instances data) { for (int i = 0; i < data.size(); i++) { addInstance(data.get(i)); } Size += data.size(); } public Instances getInstancesInClass(int class_) { return InstancesClassPool[class_]; } public int size() { return Size; } public int calculateSize() { int size = 0; for (int i = 0; i < NoOfClasses; i++) { size += InstancesClassPool[i].size(); } return size; } public boolean checkPoolSize(int poolSize) { boolean result = false; boolean sizeFlag = true; int size = 0; for (int i = 0; i < NoOfClasses; i++) { size += InstancesClassPool[i].size(); if (InstancesClassPool[i].size() < NoOfClasses - 1) { sizeFlag = false; break; } } if (sizeFlag && size >= poolSize) { result = true; } return result; } public void clear() { for (int i = 0; i < NoOfClasses; i++) { InstancesClassPool[i].clear(); } Size = 0; } @Override public void getDescription(StringBuilder sb, int indent) { //To change body of implemented methods use File | Settings | File Templates. } }