git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/data-analysis/EcologicalEngineExternalAlgorithms@71568 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
ec325150b6
commit
366995f3b8
|
@ -1,134 +1,76 @@
|
|||
package org.gcube.dataanalysis.fin.taxamatch;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.gcube.contentmanagement.lexicalmatcher.utils.AnalysisLogger;
|
||||
import org.gcube.dataanalysis.ecoengine.configuration.AlgorithmConfiguration;
|
||||
import org.gcube.dataanalysis.ecoengine.configuration.INFRASTRUCTURE;
|
||||
import org.gcube.dataanalysis.ecoengine.datatypes.PrimitiveType;
|
||||
import org.gcube.dataanalysis.ecoengine.datatypes.StatisticalType;
|
||||
import org.gcube.dataanalysis.ecoengine.datatypes.enumtypes.PrimitiveTypes;
|
||||
import org.gcube.dataanalysis.ecoengine.interfaces.Transducerer;
|
||||
import org.gcube.dataanalysis.ecoengine.transducers.OccurrencePointsInSeaOnEarth.inseasonearth;
|
||||
import org.gcube.dataanalysis.ecoengine.utils.ResourceFactory;
|
||||
import org.gcube.dataanalysis.StandardLocalExternalAlgorithm;
|
||||
import org.gcube.dataanalysis.taxamatch.fin.func_Taxamatch;
|
||||
|
||||
public class TaxaMatchTransducer implements Transducerer{
|
||||
public class TaxaMatchTransducer extends StandardLocalExternalAlgorithm {
|
||||
|
||||
public static enum operators {
|
||||
EQUAL, NOT_EQUAL, CONTAINS, BEGINS_WITH, ENDS_WITH
|
||||
};
|
||||
|
||||
public static enum operators {EQUAL, NOT_EQUAL,CONTAINS,BEGINS_WITH,ENDS_WITH};
|
||||
static String GenusOperator = "ComparisonOperatorforGenus";
|
||||
static String SpeciesOperator = "ComparisonOperatorforSpecies";
|
||||
static String Genus = "Genus";
|
||||
static String Species = "Species";
|
||||
protected AlgorithmConfiguration config;
|
||||
protected float status = 0;
|
||||
|
||||
LinkedHashMap<String, String> count = new LinkedHashMap<String, String>();
|
||||
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "An algorithm for Taxa Matching with respect to the Fishbase database";
|
||||
}
|
||||
|
||||
@Override
|
||||
public INFRASTRUCTURE getInfrastructure() {
|
||||
return INFRASTRUCTURE.LOCAL;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<StatisticalType> getInputParameters() {
|
||||
|
||||
PrimitiveType genus = new PrimitiveType(String.class.getName(), null, PrimitiveTypes.STRING, Genus,"Genus", "Gadus");
|
||||
PrimitiveType genusComp = new PrimitiveType(Enum.class.getName(), inseasonearth.values(), PrimitiveTypes.ENUMERATED, GenusOperator, "Comparison Operator for Genus",""+operators.EQUAL);
|
||||
PrimitiveType species = new PrimitiveType(String.class.getName(), null, PrimitiveTypes.STRING, Species,"Species", "morhua");
|
||||
PrimitiveType speciesComp = new PrimitiveType(Enum.class.getName(), inseasonearth.values(), PrimitiveTypes.ENUMERATED, SpeciesOperator, "Comparison Operator for Species",""+operators.EQUAL);
|
||||
|
||||
List<StatisticalType> inputs = new ArrayList<StatisticalType>();
|
||||
inputs.add(genus);
|
||||
inputs.add(species);
|
||||
inputs.add(genusComp);
|
||||
inputs.add(speciesComp);
|
||||
|
||||
return inputs;
|
||||
}
|
||||
|
||||
@Override
|
||||
public StatisticalType getOutput() {
|
||||
PrimitiveType p = new PrimitiveType(Map.class.getName(), PrimitiveType.stringMap2StatisticalMap(count), PrimitiveTypes.MAP, "Species Match","");
|
||||
return p;
|
||||
}
|
||||
|
||||
ResourceFactory resourceManager;
|
||||
public String getResourceLoad() {
|
||||
if (resourceManager==null)
|
||||
resourceManager = new ResourceFactory();
|
||||
return resourceManager.getResourceLoad(1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getResources() {
|
||||
return ResourceFactory.getResources(100f);
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init() throws Exception {
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setConfiguration(AlgorithmConfiguration config) {
|
||||
this.config = config;
|
||||
}
|
||||
protected void process() throws Exception {
|
||||
|
||||
@Override
|
||||
public void shutdown() {
|
||||
|
||||
}
|
||||
String genus = getInputParameter(Genus);
|
||||
String species = getInputParameter(Species);
|
||||
String genusOperator = getInputParameter(GenusOperator);
|
||||
String speciesOperator = getInputParameter(SpeciesOperator);
|
||||
|
||||
@Override
|
||||
public void compute() throws Exception {
|
||||
AnalysisLogger.setLogger(config.getConfigPath() + AlgorithmConfiguration.defaultLoggerFile);
|
||||
|
||||
String genus = config.getParam(Genus);
|
||||
String species = config.getParam(Species);
|
||||
String genusOperator = config.getParam(GenusOperator);
|
||||
String speciesOperator = config.getParam(SpeciesOperator);
|
||||
|
||||
String databaseIP = "biodiversity.db.i-marine.research-infrastructures.eu";
|
||||
String databaseUser = "postgres";
|
||||
String databasePwd = "0b1s@d4sc13nc3";
|
||||
String databaseName = "fishbase";
|
||||
|
||||
AnalysisLogger.getLogger().trace("Computing matching for "+genus+" "+species);
|
||||
AnalysisLogger.getLogger().trace("With operators: "+genusOperator+" "+speciesOperator);
|
||||
|
||||
|
||||
log("Computing matching for " + genus + " " + species);
|
||||
log("With operators: " + genusOperator + " " + speciesOperator);
|
||||
|
||||
func_Taxamatch func = new func_Taxamatch();
|
||||
AnalysisLogger.getLogger().trace("TaxaMatcher Initialized");
|
||||
String[] matches = func.func_Taxamatch(genus, species, genusOperator, speciesOperator, databaseIP, databaseUser, databasePwd, databaseName);
|
||||
|
||||
if ((matches==null) || (matches.length==0)){
|
||||
AnalysisLogger.getLogger().trace("No match");
|
||||
count.put("Number of Matches", "0");
|
||||
}
|
||||
else{
|
||||
AnalysisLogger.getLogger().trace("Found "+matches[0]+" matches");
|
||||
count.put("Number of Matches", matches[0]);
|
||||
String[] speciesn = matches[1].split("\n");
|
||||
for (int i=0;i<speciesn.length;i++){
|
||||
count.put("Match "+(i+1), speciesn[i].trim());
|
||||
}
|
||||
AnalysisLogger.getLogger().trace("Returning map: "+count);
|
||||
|
||||
if ((matches == null) || (matches.length == 0)) {
|
||||
log("No match");
|
||||
addOutputString("Number of Matches", "0");
|
||||
} else {
|
||||
log("Found " + matches[0] + " matches");
|
||||
addOutputString("Number of Matches", matches[0]);
|
||||
String[] speciesn = matches[1].split("\n");
|
||||
for (int i = 0; i < speciesn.length; i++) {
|
||||
addOutputString("Match " + (i + 1), speciesn[i].trim());
|
||||
}
|
||||
}
|
||||
|
||||
status = 100;
|
||||
log(outputParameters);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void shutdown() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setInputParameters() {
|
||||
addStringInput(Genus, "Genus of the species", "Gadus");
|
||||
addStringInput(Species, "Species", "morhua");
|
||||
addEnumerateInput(operators.values(), GenusOperator, "Comparison Operator for Genus", "" + operators.EQUAL);
|
||||
addEnumerateInput(operators.values(), SpeciesOperator, "Comparison Operator for Species", "" + operators.EQUAL);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue