Skip to content

Commit 33ef97a

Browse files
committed
Add feature set selector
1 parent 3590c94 commit 33ef97a

File tree

3 files changed

+43
-2
lines changed

3 files changed

+43
-2
lines changed

swan-pipeline/src/main/java/de/fraunhofer/iem/swan/SwanPipeline.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ public void run() throws IOException, InterruptedException {
4949
testDataset.load(dataset.getMethods());
5050

5151
//Initialize and populate features
52-
FeaturesHandler featuresHandler = new FeaturesHandler(dataset, testDataset, options);
53-
featuresHandler.createFeatures();
52+
FeatureSetSelector featureSetSelector = new FeatureSetSelector();
53+
IFeatureSet featureSet = featureSetSelector.select(dataset, testDataset, options);
5454

5555
//Train and evaluate model for SRM and CWE categories
5656
ModelEvaluator modelEvaluator = new ModelEvaluator(featuresHandler, options, testDataset.getMethods());
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package de.fraunhofer.iem.swan.features;
2+
3+
import de.fraunhofer.iem.swan.cli.SwanOptions;
4+
import de.fraunhofer.iem.swan.features.code.soot.SourceFileLoader;
5+
import de.fraunhofer.iem.swan.io.dataset.SrmList;
6+
import de.fraunhofer.iem.swan.model.ModelEvaluator;
7+
8+
public class FeatureSetSelector {
9+
10+
public IFeatureSet select(SrmList trainData, SourceFileLoader testData, SwanOptions options) {
11+
12+
switch (ModelEvaluator.Mode.valueOf(options.getLearningMode().toUpperCase())) {
13+
14+
case MEKA:
15+
MekaFeatureSet mekaFeatureSet = new MekaFeatureSet(trainData, testData, options);
16+
mekaFeatureSet.createFeatures();
17+
return mekaFeatureSet;
18+
case WEKA:
19+
WekaFeatureSet wekaFeatureSet = new WekaFeatureSet(trainData, testData, options);
20+
wekaFeatureSet.createFeatures();
21+
return wekaFeatureSet;
22+
}
23+
return null;
24+
}
25+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package de.fraunhofer.iem.swan.features;
2+
3+
import de.fraunhofer.iem.swan.data.Category;
4+
import de.fraunhofer.iem.swan.data.Method;
5+
import weka.core.Attribute;
6+
7+
import java.util.ArrayList;
8+
import java.util.List;
9+
import java.util.Set;
10+
11+
public interface IFeatureSet {
12+
13+
void createFeatures();
14+
15+
ArrayList<Attribute> createAttributes(Set<Category> categories, Set<Method> methods, List<FeatureSet.Type> featureSets);
16+
}

0 commit comments

Comments
 (0)