All Downloads are FREE. Search and download functionalities are using the official Maven repository.

prerna.reactor.test.RunLSILearnedReactor Maven / Gradle / Ivy

The newest version!
package prerna.reactor.test;


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import prerna.ds.r.RDataTable;
import prerna.ds.r.RSyntaxHelper;
import prerna.reactor.frame.r.AbstractRFrameReactor;
import prerna.sablecc2.om.PixelDataType;
import prerna.sablecc2.om.PixelOperationType;
import prerna.sablecc2.om.ReactorKeysEnum;
import prerna.sablecc2.om.nounmeta.NounMetadata;

public class RunLSILearnedReactor extends AbstractRFrameReactor{

	public RunLSILearnedReactor() {
		this.keysToGet = new String[]{ReactorKeysEnum.COLUMN.getKey(), ReactorKeysEnum.NUMERIC_VALUE.getKey()};
	}
	@Override
	public NounMetadata execute() {
		// get pixel inputs
		organizeKeys();
		// get R connection
		init();
		String[] packages = new String[] { "LSAfun", "text2vec"};
		this.rJavaTranslator.checkPackages(packages);
		// output frame name
		RDataTable frame = (RDataTable) getFrame();
		String returnTable = frame.getName();
		
		String frameJoinCol = this.keyValue.get(this.keysToGet[0]);
		int numRows = Integer.parseInt(this.keyValue.get(this.keysToGet[1]));

		// path to your custom r script
		String rScriptPath2 = getBaseFolder() + "\\R\\UserScripts\\RunLSILearned2.r"; 
		String rScriptPath1 = getBaseFolder() + "\\R\\UserScripts\\lsi_lookup_learned.r"; 
		rScriptPath1 = rScriptPath1.replace("\\", "/");
		rScriptPath2 = rScriptPath2.replace("\\", "/");
		
		// embed r script in java
		StringBuilder rsb = new StringBuilder();
		// load r packages
		
		rsb.append("numMatch<-"+numRows+";");
		rsb.append("source(\"" + rScriptPath1 + "\");");
		String readDescriptions = "Description<-data.frame(gsub(\"_\",\" \"," + returnTable + "[," + frameJoinCol + "]));";
		rsb.append(readDescriptions);
		String alterFrameSpace = returnTable + "$" + frameJoinCol + "<-gsub(\" \",\"_\"," + returnTable + "[," + frameJoinCol + "]);";
		rsb.append(alterFrameSpace);
		rsb.append("LSAspace <- readRDS(\"lsalearned.rds\");");
		rsb.append("source(\"" + rScriptPath2 + "\");");
		
		
		String leftTableName = returnTable;
		//TODO Change dfFinal to random string generated. Edit the R script. 
		String rightTableName = "dfFinal";
		
		//TODO Change dfFinal to random string generated. Edit the R script. 

		rsb.append("dfFinal$Description<-gsub(\" \",\"_\"," + "dfFinal$Description);");
		rsb.append(returnTable+"$LSA_Score<-NULL;"+returnTable+"$LSA_Category<-NULL;"+returnTable+"$Match<-NULL;");
		// only a single join type can be passed at a time
		String joinType = "left.outer.join";
		List> joinCols = new ArrayList>();

			Map joinColMapping = new HashMap();
			//TODO Change Description to something else
			joinColMapping.put(frameJoinCol,"Description");
			joinCols.add(joinColMapping);
		
		
		//execute r command
		String mergeString = RSyntaxHelper.getMergeSyntax(returnTable, leftTableName, rightTableName, joinType, joinCols);
		rsb.append(mergeString);
		rsb.append(";");
		
		//run script
		this.rJavaTranslator.runR(rsb.toString());
	
		return new NounMetadata(true, PixelDataType.BOOLEAN, PixelOperationType.CODE_EXECUTION);

	}

}






© 2015 - 2025 Weber Informatics LLC | Privacy Policy