Skip to content
Snippets Groups Projects
Unverified Commit 3a6dc14e authored by BARBIER Marc's avatar BARBIER Marc
Browse files

unifed mining route

parent caee661d
No related branches found
No related tags found
No related merge requests found
......@@ -18,6 +18,7 @@ import javax.validation.constraints.NotNull;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
......@@ -59,14 +60,7 @@ public class PatternMiningController {
MakePatternOccurrencesSpan makePatternOccurrencesSpan = new MakePatternOccurrencesSpan();
RunPBADEmbeddingOnly runPBADEmbeddingOnly = new RunPBADEmbeddingOnly();
@RequestMapping(value="/rest/mining/run-itemsets", method=RequestMethod.POST)
public @ResponseBody String runItemsetMining(
@RequestParam("id") Optional<String> id,
@RequestParam("columns") String columns,
@NotNull @RequestParam("algorithm") String algorithm,
@NotNull @RequestParam("support") String support,
HttpServletRequest request)
{
private String runMining(String columns, HttpServletRequest request, Optional<String> id, String support, String algorithm, boolean isItemset) {
try {
String[] columnsArr = columns.split(",\\s*");
FileItem currentInput = getCurrentItem(request, id);
......@@ -75,49 +69,59 @@ public class PatternMiningController {
throw new RuntimeException("Only Arff supported");
File data = currentInput.getFile();
Double supportAsFloat = Double.valueOf(support);
File outputReadable = MineUsingSPMF.runItemsetMining(data, Arrays.asList(columnsArr), algorithm, supportAsFloat);
savePatterns(request, id, currentInput.getFile(), outputReadable, "itemsets", columns, algorithm, support);
File occurrencesFile = storePatternSetOccurrences(id, outputReadable.getName(),request);
savePatternsWithMetadata(outputReadable, occurrencesFile,currentInput.getFile());
double supportAsFloat = Double.parseDouble(support);
File outputReadable = null;
if(isItemset) {
outputReadable = MineUsingSPMF.runItemsetMining(data, Arrays.asList(columnsArr), algorithm, supportAsFloat);
} else {
outputReadable = MineUsingSPMF.runSequentialPatternMining(data, Arrays.asList(columnsArr), algorithm, supportAsFloat);
}
savePatterns(request, id, data, outputReadable, "sequential patterns", columns, algorithm, support);
File occFile = storePatternSetOccurrences(id, outputReadable.getName(),request);
savePatternsWithMetadata(outputReadable, occFile, data);
return String.format("Found %d patterns.",IOUtils.countLines(outputReadable)-1);
}
catch (Exception e) {
e.printStackTrace();
throw(new RuntimeException(e.getMessage()));
throw new RuntimeException(e);
}
}
@RequestMapping(value="/rest/mining/run-sp", method=RequestMethod.POST)
public @ResponseBody String runSequentialPatternMining(
@PostMapping(value="/rest/mining/run-itemsets")
public @ResponseBody String runItemsetMining(
@RequestParam("id") Optional<String> id,
@RequestParam("columns") String columns,
@NotNull @RequestParam("algorithm") String algorithm,
@NotNull @RequestParam("support") String support,
HttpServletRequest request)
{
try {
String[] columnsArr = columns.split(",\\s*");
FileItem currentInput = getCurrentItem(request, id);
if(!currentInput.isArff())
throw new RuntimeException("Only Arff supported");
File data = currentInput.getFile();
double supportAsFloat = Double.parseDouble(support);
File outputReadable = MineUsingSPMF.runSequentialPatternMining(data, Arrays.asList(columnsArr), algorithm, supportAsFloat);
savePatterns(request, id, data, outputReadable, "sequential patterns", columns, algorithm, support);
File occFile = storePatternSetOccurrences(id, outputReadable.getName(),request);
savePatternsWithMetadata(outputReadable, occFile, data);
return String.format("Found %d patterns.",IOUtils.countLines(outputReadable)-1);
}
catch(InterruptedException e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage());
return runMining(columns, request, id, support, algorithm, true);
}
catch (Exception e) {
throw new RuntimeException(e);
@PostMapping(value="/rest/mining/run-sp")
public @ResponseBody String runSequentialPatternMining(
@RequestParam("id") Optional<String> id,
@RequestParam("columns") String columns,
@NotNull @RequestParam("algorithm") String algorithm,
@NotNull @RequestParam("support") String support,
HttpServletRequest request)
{
return runMining(columns, request, id, support, algorithm, false);
}
//new unified route.
@PostMapping(value="/rest/mining/mine")
public @ResponseBody String runItemsetMining(
@RequestParam("id") Optional<String> id,
@RequestParam("columns") String columns,
@NotNull @RequestParam("algorithm") String algorithm,
@NotNull @RequestParam("support") String support,
@NotNull @RequestParam("isItemset") Boolean isItemset,
HttpServletRequest request)
{
return runMining(columns, request, id, support, algorithm, isItemset);
}
private File storePatternSetOccurrences(Optional<String> id, String patternFilename, HttpServletRequest request) throws Exception
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment