Tratando de obtener un modelo adecuado con la entrada del usuario.Digamos que quiero ayudar a un usuario con un modelo adecuado, porque sé lo que es la Y y sé que quiero que hagan gen reg. Entonces les doy esto.
Names default to here(1);
dt = open("$SAMPLE_DATA\Big Class.jmp");
fit = dt << Fit Model(
Y( :height ),
Effects(),
Center Polynomials( 0 ),
Personality( "Generalized Regression" ),
Generalized Distribution( "Normal" ),
);
Cool, fit = un cuadro de diálogo modelo. Pero no es modal, por lo que el script sigue ejecutándose. Además, cuando presionan ejecutar, se elimina el ajuste.
Lo que realmente quiero es que el usuario ingrese sus cosas y luego, una vez que el informe esté listo, procedo.
Estoy tratando de hacer algo como esto, pero no he tenido suerte.
while(
obj = current report()[OutlineBox(1)] << Get Scriptable Object();
!(char(obj) == "Fit Generalized[]" & try(obj[1] << Get Prediction Formula; 1, 0));
,
wait(.3);
);
yo DE VERDAD no quiero tener que reconstruir toda la interfaz de usuario con todas las opciones, especialmente porque los efectos no son fáciles de implementar.
Re: Tratando de obtener un modelo adecuado con la entrada del usuario.Puedo hacer algo como esto, pero siento que hay mil maneras de romper esto y realmente espero algo más robusto.
while(
obj = current report()[OutlineBox(1)] << Get Scriptable Object();
!(char(obj) == "Fit Generalized[]");
,
wait(.3);
);
btn_go_real = report(obj)[Buttonbox(1)];
report(obj)[1] << Append(Buttonbox("MyGo",
<<SET function=""></SET>Re: Tratando de obtener un modelo adecuado con la entrada del usuario.¿Esto hace algo para ayudar? Es una ventana modal, y puede capturar el árbol de visualización de salida.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
nw = New Window( "example",
<<MODAL></MODAL>
Re: Tratando de obtener un modelo adecuado con la entrada del usuario.En realidad no, debido a la segunda ventana
Re: Tratando de obtener un modelo adecuado con la entrada del usuario.He usado este tipo de enfoque varias veces anteriormente:
Names default to here(1);
dt = open("$SAMPLE_DATA\Big Class.jmp");
fit = dt << Fit Model(
Y( :height ),
Effects(),
Center Polynomials( 0 ),
Personality( "Generalized Regression" ),
Generalized Distribution( "Normal" ),
);
// The 'Run' button
runButton = Report(fit)[ButtonBox(9)];
// Append to the in-built action of the button
runButton << setScript(doSomething);
// The 'Terms' shown in 'dt2' reflect the user selections made in teh launch dialog
doSomething =
Expr(
Beep();
fit2 = fit << run;
dt2 = Report(fit2)[tableBox(5)] << makeCombinedDataTable;
dt2 << setName("Parameter Estimates")
);Re: Tratando de obtener un modelo adecuado con la entrada del usuario. @vince_faller , @ian_jmp vencerme En realidad, mi script utiliza 2 funciones Keep Dialog Open y luego el truco de Ian para agregar un script a un botón de ejecución que proporcionó hace un par de años (cerca del 21 de agosto de 2018). My doSomething guarda el modelo en la tabla de datos.
Aprovechando esta oportunidad para agradecer nuevamente a Ian por el útil truco y Keep Dialog Open (que Ian también emplea). ¡Realmente corté y pegué su código y lo modifiqué!
Names default to here(1);
dt = open("$SAMPLE_DATA\Big Class.jmp");
fit = dt << Fit Model(
Y( :height ),
Effects(),
Center Polynomials( 0 ),
Personality( "Generalized Regression" ),
Generalized Distribution( "Normal" ),
Keep Dialog Open(1)
);
// Define a sample script
doSomething =
Expr(
Beep();
// For( i = 1, i <= N Table(), i++,
// Print( i, Data Table( i ) << getName )
// );
fit << Save to Data Table;
snames = dt << Get Table Script Names();
s = dt << get script( snames[N Items( snames )] );
Show( s );
);
// Assign the sample script to the button (JMP seems to prepend to the script that's already there?)
Report( fit )[Button Box( 9 )] << setScript( doSomething );
Re: Tratando de obtener un modelo adecuado con la entrada del usuario.Gracias @ian_jmp y @ gzmorgan0 , Construí sobre lo que dijeron y básicamente lo hice dos veces porque realmente quería que mi Algo hiciera algo después de presionar Ir en la Plataforma Gen Reg. También los funcionalicé solo para asegurarme de que las variables locales no rompieran nada con este método.
Una pregunta más que no he podido superar, si quiero que mi función "My_Gen_Reg" devuelva el valor de "doSomething". Nuevamente, tratando de no usar globales o herejes.
* Editar *, tengo una solución provisional que parece funcionar. Sin embargo, todavía no me gusta cómo funciona. Sin embargo, definitivamente es mejor que recrear la interfaz de usuario.
Names default to here(1);
my_Gen_Reg = Function({dt},
{fit, pf_get},
fit = dt << Fit Model(
Y( :height ),
Effects(),
Center Polynomials( 0 ),
Personality( "Generalized Regression" ),
Generalized Distribution( "Normal" ),
//Keep Dialog Open(1)
);
Report( fit )[Button Box( 9 )] << Set Function(
Function({self},
{fit_self, fit2},
fit_self = ((self << Top Parent)[OutlineBox(1)]<<GET scriptable="" object=""></GET>