JMP > JSL > Come passare gli argomenti al componente aggiuntivo includeva il mio script?Ciao comunità JMP,
Sono un utente accanito del componente aggiuntivo di calcolo FDR di John Sall ( com.sas.sall.fdrpvalue.jmaddin) nell'analisi di dati di biomarcatori di grandi dimensioni.
Sebbene l'inserimento manuale dei dati in questo componente aggiuntivo sia semplice, non ho capito come passare argomenti dai miei script JSL a questo strumento.
So che devo utilizzare il comando Includi ("[Componente aggiuntivo]") per abilitare l'uso del componente aggiuntivo nei miei script, ma come faccio a indicare colonne specifiche generate dal mio script nel componente aggiuntivo?
Grazie per l'aiuto.
Migliore,
TS
ScriptingRe: JMP > JSL > Come passare argomenti al componente aggiuntivo incluso il mio script?Ho installato l'addin da qui e ho guardato il codice Molto probabilmente lo riscriverei e utilizzerei le funzioni, ma dovresti essere in grado di utilizzare la Nuova finestra creata dall'addin con qualcosa del genere:
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 > Come passare argomenti al componente aggiuntivo incluso il mio script?Ciao comunità JMP,
Innanzitutto, grazie a @jthi per una soluzione rapida ed efficiente.
Solo per completezza, ho usato un'opzione alternativa grezza in cui ho creato una funzione dagli elementi principali dello script FDR JSL (vedi sotto). Ho quindi chiamato questa funzione nel mio script.
IMPORTANTE: il codice principale utilizzato in questa funzione è stato creato da 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>
Migliore ,
TS