JMP > JSL > Comment passer des arguments au complément inclus mon propre script ?Salut la communauté JMP,
Je suis un grand utilisateur du complément de calcul FDR de John Sall ( com.sas.sall.fdrpvalue.jmpaddin) dans l'analyse de grandes données de biomarqueurs.
Bien que la saisie manuelle des données dans ce complément soit simple, je n'ai pas compris comment transmettre les arguments de mes scripts JSL à cet outil.
Je sais que je dois utiliser la commande Inclure ("[Complément]") pour activer l'utilisation du complément dans mes scripts, mais comment puis-je pointer vers des colonnes spécifiques générées par mon script dans le complément ?
Merci de votre aide.
Meilleur,
ST
ScriptRe : JMP > JSL > Comment passer des arguments au complément inclus mon propre script ?J'ai installé le complément à partir de ici et regardé le code. Je le réécrirais très probablement et utiliserais des fonctions, mais vous devriez pouvoir utiliser la nouvelle fenêtre créée par le complément avec quelque chose comme ceci :
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 > Comment passer des arguments au complément inclus mon propre script ?Salut la communauté JMP,
Tout d'abord, merci à @jthi pour une solution rapide et efficace.
Juste pour être complet, j'ai utilisé une option alternative brute dans laquelle j'ai créé une fonction à partir des éléments de base du script FDR JSL (voir ci-dessous). J'ai ensuite appelé cette fonction dans mon script.
IMPORTANT : le code de base utilisé dans cette fonction a été créé par 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>
Meilleur ,
ST