JMP > JSL > Wie man Argumente an das Add-In übergibt hat mein eigenes Skript enthalten?Hallo JMP-Community,
Ich bin ein begeisterter Benutzer von John Salls FDR-Berechnungs-Add-In ( com.sas.sall.fdrpvalue.jmpaddin) bei der Analyse großer Biomarker-Daten.
Während die manuelle Eingabe von Daten in dieses Add-In unkompliziert ist, habe ich nicht herausgefunden, wie ich Argumente aus meinen JSL-Skripts an dieses Tool übergeben kann.
Ich weiß, dass ich den Befehl Einschließen ("[Add-in]") verwenden muss, um die Verwendung des Add-Ins in meinen Skripten zu aktivieren, aber wie zeige ich auf bestimmte Spalten, die von meinem Skript im Add-In generiert wurden?
Danke für Ihre Hilfe.
Am besten,
TS
SkriptingBetreff: JMP > JSL > Wie man Argumente an Add-In übergibt, mein eigenes Skript enthalten?Ich habe das Add-In von installiert Hier und habe mir den Code angeschaut. Ich würde es höchstwahrscheinlich umschreiben und Funktionen verwenden, aber Sie sollten in der Lage sein, das neue Fenster zu verwenden, das das Add-In mit etwas wie folgt erstellt:
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;Betreff: JMP > JSL > Wie man Argumente an Add-In übergibt, mein eigenes Skript enthalten?Hallo JMP-Community,
Erstmal danke an @jthi für eine schnelle und effiziente Lösung.
Nur der Vollständigkeit halber habe ich eine grobe alternative Option verwendet, bei der ich eine Funktion aus den Kernelementen des FDR-JSL-Skripts erstellt habe (siehe unten). Diese Funktion habe ich dann in meinem Skript aufgerufen.
WICHTIG: Der in dieser Funktion verwendete Kerncode wurde von John Sall erstellt.
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>
Am besten ,
TS