
prerna.reactor.algorithms.RunGPT2DescriptionReactor Maven / Gradle / Ivy
The newest version!
package prerna.reactor.algorithms;
import java.util.List;
import java.util.Vector;
import org.apache.logging.log4j.Logger;
import prerna.masterdatabase.utility.MasterDatabaseUtility;
import prerna.reactor.frame.r.AbstractRFrameReactor;
import prerna.sablecc2.om.GenRowStruct;
import prerna.sablecc2.om.PixelDataType;
import prerna.sablecc2.om.ReactorKeysEnum;
import prerna.sablecc2.om.nounmeta.NounMetadata;
import prerna.util.Utility;
// RunGPT2Description(descriptionType=["Table"],app=["814690f1-ea53-4179-a526-494d9431def7"],table=["MOVIE"],numDescriptions=[1])
// RunGPT2Description(descriptionType=["App"],app=["814690f1-ea53-4179-a526-494d9431def7"],table=[""],numDescriptions=[1])
public class RunGPT2DescriptionReactor extends AbstractRFrameReactor {
private static final String CLASS_NAME = RunGPT2DescriptionReactor.class.getName();
private static final String DESCRIPTION_TYPE = "descriptionType";
private static final String NUMBER_DESCRIPTIONS = "numDescriptions";
public RunGPT2DescriptionReactor() {
this.keysToGet = new String[] { DESCRIPTION_TYPE, ReactorKeysEnum.DATABASE.getKey(),
ReactorKeysEnum.TABLE.getKey() , NUMBER_DESCRIPTIONS };
}
@Override
public NounMetadata execute() {
// set up the class
init();
organizeKeys();
Logger logger = this.getLogger(CLASS_NAME);
StringBuilder rsb = new StringBuilder();
String[] packages = new String[] { "gpt2" };
this.rJavaTranslator.checkPackages(packages);
// get inputs
String descType = getInputString(DESCRIPTION_TYPE);
String databaseId = getInputString(ReactorKeysEnum.DATABASE.getKey());
String tableName = getInputString(ReactorKeysEnum.TABLE.getKey());
int numDescriptions = getInputInt(NUMBER_DESCRIPTIONS);
// source the files
String baseFolder = getBaseFolder();
String source = "source(\"" + baseFolder + "\\R\\AnalyticsRoutineScripts\\proceed.R\");";
rsb.append(source.replace("\\", "/"));
// get the db table
String dbTable = getDbTable(databaseId,tableName);
// run the function on either table or database
String result = "result" + Utility.getRandomString(6);
String inputVar = "inputVar" + Utility.getRandomString(6);
if(descType.equals("Table")) {
rsb.append(inputVar + " <-" + dbTable + "[" + dbTable + "$Table==\"" + databaseId + "._." + tableName + "\",]$Column;");
rsb.append(result + " <- infer_tbl_desc(" + inputVar + ", qty=" + numDescriptions + ");");
} else if(descType.equals("App")) {
rsb.append(inputVar + " <-" + dbTable + "[" + dbTable + "$AppID==\"" + databaseId + "\",];");
rsb.append(result + " <- infer_db_desc(" + inputVar + ", qty=" + numDescriptions + ");");
}
// get the result as a string
this.rJavaTranslator.runR(rsb.toString());
String[] resultStrings = this.rJavaTranslator.getStringArray(result);
// gc
this.rJavaTranslator.executeEmptyR("rm( " + result + "," + inputVar + "," + dbTable + "); gc();");
// return data to the front end as string array
return new NounMetadata(resultStrings, PixelDataType.CUSTOM_DATA_STRUCTURE);
}
private String getDbTable(String databaseId, String tableName) {
StringBuilder sessionTableBuilder = new StringBuilder();
// first get the total number of cols
List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy