Exécution séquentielle du scriptJ'essaie de créer mes estimations de sauvegarde à partir de ma plateforme de survie, puis de récupérer les estimations dans la table nouvellement créée. Le problème est qu'il n'attend pas que la table de survie soit créée avant d'exécuter l'expression de sortie. J'ai essayé de terminer, d'attendre, d'exécuter des commandes différentes, etc. et je n'arrive pas à faire fonctionner cela, des suggestions ? J'ai JMP 16.0 avec MacBook.
Names Default To Here( 0 );
Clear Log();
dt = Current Data Table();
If( Not( Is Scriptable( dt ) ),
dtsel = Pick File( "Open File", {"JMP|jmp", "All files|*"} );
If( dtsel == "",
Stop(),
Try( dt = Open( dtsel ), Stop() )
);
);
Sur = Expr(
Obj = dt << Survival(
Failure Plot( 1 ),
Show Points( 1 ),
Show Shaded Simultaneous CI( 1 ),
Show Simultaneous CI( 1 ),
Weibull Fit( 1 )
//Save Estimates
);
dtname = Data Table( dt ) << Get Name;
Show( dtname );
obj << Save Estimates;
wait(1);
);
Eval( Survival );
Output = Expr(
dt2 = Data Table( dtname || " Survival");
columnnamegroup = Column( dt2, 1 ) << Get Name;
Groups = Column( dt2, columnnamegroup ) << Get As Matrix;
Show( Groups );
);
Eval(Output);Organisation du contenuFusion et nettoyage des donnéesmacOSPersonnalisation de masseAnalyse de fiabilitéPartage et communication des résultatsRe : Script exécuté de manière séquentielleRecevez-vous un message d'erreur dans le journal de JMP ? Dans l'exemple que vous avez donné, ayez le nom Sur pour l'expression, puis évaluez Survival, pas sûr, cela pourrait-il être le problème? Cela devrait entraîner une erreur telle que : Nom non résolu : Survie dans l'accès ou l'évaluation de 'Survie' , Survie/*###*/
Cela semble bien fonctionner après avoir changé puis Eval(Survivor) -> Eval(Sur):
Names Default To Here(0);
dt = Open("$SAMPLE_DATA/Rats.jmp");
Sur = Expr(
obj = dt << Survival(Y(:days), Censor(:Censor), Grouping(:Group));
dtname = Data Table(dt) << Get Name;
obj << Save Estimates;
);
Eval(Sur);
Output = Expr(
dt2 = Data Table(dtname || " Survival");
columnnamegroup = Column(dt2, 1) << Get Name;
Groups = Column(dt2, columnnamegroup) << Get As Matrix;
Show(Groups);
);
Eval(Output);
Dans les cas assez rares où JMP nécessite l'ajout d'un délai, wait(0) est généralement suffisant (et si vous avez beaucoup de formules << exécuter des formules pourrait aider).
Re : Script exécuté de manière séquentielleJe pense que je comprends ce que vous essayez de faire - en fait, vous voulez que la fenêtre de saisie pour le Survie() plate-forme pour être Modal -- vous voulez qu'il bloque l'exécution du script jusqu'à ce que la fenêtre soit fermée.Vous pouvez le faire en définissant explicitement une fenêtre au lieu de vous fier au comportement par défaut.Ici, j'ai créé une fenêtre modale qui contient les champs de saisie, puis je saisis chaque entrée et crée le Survie() expression avec les entrées correctes.
Names Default To Here( 1 );
dt = Current Data Table();
If( Not( Is Scriptable( dt ) ),
dtsel = Pick File( "Open File", {"JMP|jmp", "All files|*"} );
If( dtsel == "",
Stop(),
Try( dt = Open( dtsel ), Stop() )
);
);
dtname = Data Table( dt ) << Get Name;
validated = 0;
New Window( "Inputs",
<<MODAL></MODAL>Re : Script exécuté de manière séquentielleC'était une faute de frappe de ma part, je l'avais correcte auparavant, mais cela ne fonctionnait pas pour moi même lorsque les deux correspondaient. J'ai essayé d'attendre et cela n'a pas fonctionné. Je n'ai pas de formules, tout mon script a été copié.
Re : Script exécuté de manière séquentielleOui cela fonctionne parfaitement ! J'ai fait des fenêtres modales dans le passé, mais je ne savais pas comment le faire avec la plateforme. J'ai essayé plusieurs façons et j'ai échoué. Je suppose que je n'ai pas pensé à utiliser simplement une nouvelle fenêtre.
Merci!
Re : Script exécuté de manière séquentielleje préfère largement @ErraticAttack mais maintenant que je comprends correctement la question, voici une autre méthode qui peut parfois fonctionner. Paramétrer On Close() sur la fenêtre de la plateforme qui exécutera alors ce que vous voulez. Ceci est assez sujet aux erreurs car il dépend des noms de fenêtres, mais il pourrait être rendu un peu plus robuste en comparant les fenêtres existantes avant et après l'exécution.
Names Default To Here(0);
dt = Open("$SAMPLE_DATA/Rats.jmp");
Sur = Expr(
obj = dt << Survival();
Window("Survival / Reliability") << On Close(Output);
);
Eval(Sur);
Output = Expr(
dtname = Data Table(dt) << Get Name;
For Each({window_name}, Get Window List() << Get Window Title,
If(Contains(window_name, Eval Insert("^dtname^ - Survival of ")),
cur_w = Window(window_name);
break();
);
);
obj = cur_w[OutlineBox(1)] << Get Scriptable Object;
obj << Save Estimates;
dt2 = Data Table(dtname || " Survival");
columnnamegroup = Column(dt2, 1) << Get Name;
Groups = Column(dt2, columnnamegroup) << Get As Matrix;
Show(Groups);
);