Script ejecutado secuencialmenteEstoy intentando crear mis estimaciones guardadas desde mi plataforma de supervivencia y luego obtener las estimaciones en la tabla recién creada. El problema es que no esperará hasta que se cree la tabla de supervivencia antes de ejecutar la expresión de salida. He intentado finalizar, esperar, diferentes órdenes, etc. y no puedo lograr que esto funcione. ¿Alguna sugerencia? Tengo 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);Organización de contenidoCombinación y limpieza de datosmacOSPersonalización masivaAnálisis de confiabilidadCompartir y comunicar resultadosRe: Ejecución secuencial de secuencias de comandos¿Está recibiendo algún mensaje de error en el registro de JMP? En el ejemplo que dio, tenga el nombre Sur para la expresión y luego evalúe Supervivencia, no estoy seguro, ¿podría ser ese el problema? Debería dar como resultado un error como: Nombre no resuelto: Supervivencia en el acceso o evaluación de 'Supervivencia', Supervivencia/*###*/
Esto parece funcionar bien después de cambiar 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);
En los casos bastante raros, JMP requiere agregar algún retraso, esperar (0) suele ser suficiente (y si tiene muchas fórmulas << ejecutar fórmulas podría ayudar).
Re: Ejecución secuencial de secuencias de comandosCreo que entiendo lo que está tratando de hacer: efectivamente, desea que la ventana de entrada para el Supervivencia() plataforma para ser Modal -- desea que bloquee la ejecución del script hasta que se cierre la ventana.Puede hacerlo definiendo explícitamente una ventana en lugar de confiar en el comportamiento predeterminado.Aquí he creado una ventana modal que contiene los campos de entrada, luego tomo cada entrada y creo el Supervivencia() expresión con las entradas correctas.
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: Ejecución secuencial de secuencias de comandosEso fue un error tipográfico de mi parte, lo tenía correcto antes, pero no funcionó para mí incluso cuando los dos coincidían. Probé la espera y no funcionó. No tengo fórmulas, mi script completo fue copiado.
Re: Ejecución secuencial de secuencias de comandos¡Sí, esto funciona perfectamente! He hecho ventanas modales en el pasado, pero no sabía cómo hacerlo con la plataforma. Lo intenté de varias maneras y fracasé. Supongo que no pensé en simplemente usar una nueva ventana.
¡Gracias!
Re: Ejecución secuencial de secuencias de comandosyo prefiero mucho @ErraticAttack pero ahora que entiendo la pregunta correctamente, aquí hay otro método que a veces podría funcionar. Configurando On Close() en la ventana de la plataforma que luego ejecutará lo que quieras. Esto es bastante propenso a errores debido a que depende de los nombres de las ventanas, pero podría hacerse un poco más sólido comparando qué ventanas existen antes y después de la ejecución.
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);
);