JMP > JSL > Wie übergebe ich Argumente an ein Add-In, das mein eigenes Skript enthält?Hallo JMP-Community,
Ich bin ein begeisterter Benutzer des FDR-Berechnungs-Add-Ins von John Sall ( com.sas.sall.fdrpvalue.jmpaddin) bei der Analyse großer Biomarkerdaten.
Während die manuelle Eingabe von Daten in diesem Add-In unkompliziert ist, habe ich noch nicht herausgefunden, wie ich Argumente aus meinen JSL-Skripten 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 verweise ich im Add-In auf bestimmte von meinem Skript generierte Spalten?
Ich danke Ihnen für Ihre Hilfe.
Am besten,
TS
Automatisierung und SkripterstellungBetreff: JMP > JSL > Wie übergebe ich Argumente an ein Add-In, das mein eigenes Skript enthält?Hallo JMP-Community,
Zunächst einmal vielen Dank an @jthi für eine schnelle und effiziente Lösung.
Der Vollständigkeit halber habe ich eine grobe Alternativoption 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
Betreff: JMP > JSL > Wie übergebe ich Argumente an ein Add-In, das mein eigenes Skript enthält?Ich habe das Add-In von installiert Hier und schaute mir den Code an. Ich würde es höchstwahrscheinlich umschreiben und Funktionen verwenden, aber Sie sollten in der Lage sein, das neue Fenster, das das Add-In erstellt, mit etwas wie diesem zu verwenden:
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;