Script eseguito in sequenzaSto provando a creare le mie Save Estimates dalla mia piattaforma di sopravvivenza, quindi a prendere le stime nella tabella appena creata. Il problema è che non attende che venga creata la tabella Survival prima di eseguire l'espressione Output. Ho provato finish, wait, diversi ordini, ecc... e non riesco a farlo funzionare, suggerimenti? Ho JMP 16.0 con 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);Organizzazione dei contenutiFusione e pulizia dei datisistema operativo macOSPersonalizzazione di massaAnalisi di affidabilitàCondivisione e comunicazione dei risultatiRe: Script eseguito in sequenzaViene visualizzato un messaggio di errore nel registro di JMP? Nell'esempio che hai fornito hai il cognome per l'espressione e quindi valuta Survival, non sono sicuro, potrebbe essere questo il problema? Dovrebbe risultare in un errore come: Nome non risolto: Sopravvivenza in accesso o valutazione di 'Sopravvivenza' , Sopravvivenza/*###*/
Questo sembra funzionare bene dopo aver cambiato poi 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);
Nei casi abbastanza rari JMP richiede l'aggiunta di un certo ritardo, wait(0) di solito è sufficiente (e se hai molte formule << eseguire formule potrebbe aiutare).
Re: Script eseguito in sequenzaPenso di capire cosa stai cercando di fare - in effetti vuoi che la finestra di input per il Sopravvivenza() piattaforma per essere Modale -- vuoi che blocchi l'esecuzione dello script fino alla chiusura della finestra.Puoi farlo definendo esplicitamente una finestra invece di fare affidamento sul comportamento predefinito.Qui ho creato una finestra modale che contiene i campi di input, quindi prendo ogni input e creo il file Sopravvivenza() espressione con gli input corretti.
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 eseguito in sequenzaSì, funziona perfettamente! Ho fatto finestre modali in passato, ma non sapevo come farlo con la piattaforma. Ho provato in diversi modi e ho fallito. Immagino di non aver pensato solo a usare una nuova finestra.
Grazie!
Re: Script eseguito in sequenzaÈ stato un errore di battitura da parte mia, l'avevo corretto prima, ma non ha funzionato per me anche quando i due combaciavano. Ho provato l'attesa e non ha funzionato. Non ho formule, il mio intero script è stato copiato.
Re: Script eseguito in sequenzapreferisco di gran lunga @ErraticAttack 's soluzione ma ora che ho capito correttamente la domanda ecco un altro metodo che a volte potrebbe funzionare. Impostando su Close() sulla finestra della piattaforma che eseguirà quindi tutto ciò che desideri. Questo è abbastanza soggetto a errori a causa della dipendenza dai nomi delle finestre, ma potrebbe essere reso un po' più robusto, confrontando quali finestre esistono prima e dopo l'esecuzione.
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);
);