JMP> JSL> ¿Cómo pasar argumentos a un complemento incluido mi propio script?Hola, comunidad de JMP:
Soy un ávido usuario del complemento de cálculo FDR de John Sall ( com.sas.sall.fdrpvalue.jmpaddin) en el análisis de datos de biomarcadores grandes.
Si bien la entrada manual de datos en este complemento es sencilla, no he descubierto cómo pasar argumentos de mis scripts JSL a esta herramienta.
Sé que tengo que usar el comando Incluir ("[Complemento]") para habilitar el uso del Complemento en mis scripts, pero ¿cómo apunto columnas específicas generadas por mi script en el Complemento?
Gracias por tu ayuda.
Mejor,
TS
ScriptingRe: JMP> JSL> ¿Cómo pasar argumentos al complemento incluido mi propio script?Instalé el complemento de aquí y miró el código. Lo más probable es que lo reescriba y use funciones, pero debería poder usar la Nueva ventana que crea el complemento con algo como esto:
Names Default To Here(1);
//This will immediately launch New Window with reference fdrDlg
Include("$ADDIN_HOME(com.sas.sall.fdrpvalue)/falseDiscoveryPValue.jsl");
dt = Open("$SAMPLE_DATA/Big Class.jmp");
colListLabel << Set Items({"age", "sex"}); //Label Columns
colListPVal << Set Items({"height"}); //PValue Column
//ok button doesn't have direct reference, so we can look for it with XPath for example
ok_btn = (fdrDlg << XPath("//ButtonBox[@title='OK']"))[1];
//to launch we can press ok_btn
ok_btn << Click;Re: JMP> JSL> ¿Cómo pasar argumentos al complemento incluido mi propio script?Hola, comunidad de JMP:
Primero, gracias a @jthi para una solución rápida y eficaz.
Solo para completar, utilicé una opción alternativa cruda en la que creé una función a partir de los elementos centrales del script FDR JSL (ver más abajo). Luego llamé a esta función en mi script.
IMPORTANTE: el código principal utilizado en esta función fue creado por John Sall.
NamesDefaultToHere(1);
fdr = Function ({dtf, pvalCol},
pvalues = pvalCol<<GET values="">1,dialog("PValues must be between 0 and 1");throw());
index = rankIndex(pvalues); // removes missing values
n = nrow(index);
ordPValue = pvalues[index];
adjPValue = J(n,1,.);
for(i=1,i<=n,i++,
j = n-i+1;
ratio = n/(n-i+1);
adjPValue[j] = if (i==1,ordPValue[j],min(ratio*ordPValue[j],adjPValue[j+1]));
);
rowPValues = J(NRow(dtf),1,.);
rowPValues[index] = adjPValue;
sfx = pvalCol << get name ();
n_col_name = "FDR " || sfx;
dtf<<NEWCOLUMN></NEWCOLUMN></GET>
Mejor ,
TS