Pregunta sobre cómo obtener datos de una salida de trazado utilizando objetos en la estructura de árbol<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola, quiero obtener datos de fallout para varios escenarios de límites de especificaciones. Lo he hecho anteriormente en otra secuencia de comandos que recorre las columnas, obteniendo cada columna como una lista, los datos de select_where () están por encima / por debajo de los límites de especificaciones, pero esta vez quería usar información JMP nativa.
La plataforma de distribución de JMP mostrará el análisis de cpk y las consecuencias cuando estén presentes los límites. Cuando examino la estructura de árbol, la información de fallout aparece en un objeto / lista llamado "numbercolbox (4)". Descubrí cómo capturar los datos negativos, y puedo completar los límites de especificaciones y volver a ejecutar la distribución para cada uno de mis conjuntos de límites, pero me gustaría saber qué tan confiable es esta solución. Por ejemplo, si alguien más tiene un conjunto diferente de preferencias, ¿numbercolbox (4) siempre va a extraer los datos de fallout?
Supongo que una alternativa a esto es xpaths, pero no tengo mucha información sobre esto. Si esta es una solución decente y alguien tiene documentación sobre ella, hágamelo saber.
Se adjunta un script que hace lo que quiero y funciona para mí. Puedes ejecutarlo y ver de qué estoy hablando. Utiliza datos de muestra.
Para ver la estructura de árbol en una salida JMP (gráfico, etc.), haga que la ventana sea más grande de lo que es de forma nativa, luego presione Ctrl-Mayús y haga clic con el botón derecho en la parte inferior o en el área más a la derecha, y seleccione Mostrar estructura de árbol. Vea abajo.
Gracias,
-Micro

Re: Pregunta sobre cómo obtener datos de una salida de trazado utilizando objetos en estructura de árbolCambié el código xpath para hacerlo más simple (al menos para mí), y esto funciona para lo que necesito que haga. Sin embargo, sigo sintiendo curiosidad por la razón por la cual el código que publiqué arriba no funciona, ya que la estructura / código de uso más general que tiene sería realmente útil.
Gracias,
Micro
nombres predeterminados aquí ( 1 ) ;
testVar = 0 ;
testVar = 1 ; // comentar hacia fuera para ejecuciones posteriores
Si ( testVar ,
abierto ( "$ SAMPLE_DATA \ Semiconductor Capability.jmp" ) ;
myDist = Distribución (
Apilar ( 1 ) ,
Distribución continua (
Columna ( : NPN1 ) ,
Personalizar estadísticas de resumen (
Medio robusto ( 1 ) ,
Robusto Std Dev ( 1 )
)
) ,
Distribución continua (
Columna ( : PNP1 ) ,
Personalizar estadísticas de resumen (
Medio robusto ( 1 ) ,
Robusto Std Dev ( 1 )
)
) ,
Distribución continua (
Columna ( : PNP2 ) ,
Personalizar estadísticas de resumen (
Medio robusto ( 1 ) ,
Robusto Std Dev ( 1 )
)
)
) ;
) ;
reportObj = myDist << xpath ( "// OutlineBox [text () = 'Summary Statistics']" ) ;
para ( yo = 1 , yo <= Nitems ( reportObj ) , yo ++, espectáculo ( reportObj El yo ] << obtener titulo ) ; ) ;
strList = {} ;
reportObj = myDist << xpath ( "// OutlineBox [text () = 'Summary Statistics'] // StringColBox" ) ;
// para (i = 1, i <= nitems (reportObj), i ++, show (reportObj << obtener); strList = reportObj << obtener;);
espectáculo ( reportObj El 1 ] << obtener ) ;
strList = reportObj El 1 ] << obtener ;
tratar ( rMnIndx = loc ( strList , "Medio robusto" ) , rMnIndx = - 1 ) ;
tratar ( rStdIndx = loc ( strList , "Desviación estándar robusta" ) , rStdIndx = - 1 ) ;
lista de estadísticas = {} ;
reportObj = myDist << xpath ( "// OutlineBox [text () = 'Summary Statistics'] // NumberColBox" ) ;
// para (i = 1, i <= nitems (reportObj), i ++, show (reportObj << obtener); statList = reportObj << obtener;);
espectáculo ( reportObj El 1 ] << obtener ) ;
lista de estadísticas = reportObj El 1 ] << obtener ;
Si ( rMnIndx > 0 Y rStdIndx > 0 ,
robusto = lista de estadísticas El rMnIndx ] ;
robusto = lista de estadísticas El rStdIndx ] ;
,
robusto = - 999 ;
robusto = - 999 ;
) ;
espectáculo ( robusto , robusto ) ;
Re: Pregunta sobre cómo obtener datos de una salida de trazado utilizando objetos en estructura de árbolHola philip
Finalmente pude revisar el código xpath, y estoy teniendo problemas con eso. Utilicé tu cartel como referencia. ¿Puedes ayudar a averiguar qué estoy haciendo mal?
Además, creo que he visto esto antes, pero no recuerdo ... cuál es el ' . ' en el " list_testSS.Key "nombre de variable para?
Parece una reminiscencia de una estructura en C pero no pude encontrar documentación jsl sobre ella. No estaba seguro de si estaba configurado correctamente en mi código.
Gracias,
Micro
nombres predeterminados aquí ( 1 ) ;
abierto ( "$ SAMPLE_DATA \ Semiconductor Capability.jmp" ) ;
myDist =
Distribución (
Apilar ( 1 ) ,
Distribución continua (
Columna ( : NPN1 ) ,
Diseño horizontal ( 1 ) ,
Vertical ( 0 ) ,
Ejes a la izquierda ( 1 ) ,
Personalizar estadísticas de resumen (
Std Err Mean ( 0 ) ,
Intervalo de confianza media superior ( 0 ) ,
Intervalo de confianza medio inferior ( 0 ) ,
N Missing ( 1 ) ,
Distancia ( 1 ) ,
Medio robusto ( 1 ) ,
Robusto Std Dev ( 1 )
)
)
) ;
reportObj = myDist << xpath ( "// OutlineBox [text () = 'Summary Statistics'] / ancestor :: OutlineBox [last ()]" ) ;
list_groupName = reportObj << GetTitle ;
list_testSS.Key = ( reportObj << xpath ( "// * [contiene (texto (), 'Estadísticas de resumen')] / following-sibling :: * // StringColBox" )) << Obtener ;
list_testSS.Val = ( reportObj << xpath ( "// * [contiene (texto (), 'Estadísticas de resumen')] / following-sibling :: * // NumberColBox" )) << Obtener ;
list_levelString = ( reportObj << xpath ( "// OutlineBox [text () = 'Sigma a largo plazo'] // StringColBoxHeader [text () = 'Capability'] / .." )) << obtener ;
list_levelMeans = ( reportObj << xpath ( "// OutlineBox [text () = 'Sigma a largo plazo'] // NumberColBoxHeader [text () = 'Index'] / .." )) << obtener ;
Re: Pregunta sobre cómo obtener datos de una salida de trazado utilizando objetos en estructura de árbolUna clara ventaja de xpath es cuando hay varios objetos de displaybox en una ventana de Informe JMP. Por ejemplo, digamos que hiciste un análisis y terminaste
Con 100 Outlineboxes, con xpath puedes hacer:
rpt << xpath ("// OutlineBox")
y se devuelve una lista de referencias a TODOS los cuadros de esquema. (donde rpt hace referencia al Ventana de informe JMP)
Con las secuencias de comandos de displaybox tradicionales, primero debe saber cuántas se generaron, luego pasar de 1 a N y acceder a cada módulo a través de su índice. La indexación puede ser un problema, especialmente si la secuencia no es clara (por ejemplo, las cámaras anexas anidadas). Esto puede ser muchos más pasos de codificación.
En cuanto a la velocidad, había una diferencia perceptible para mí con XPath ejecutándose mucho más rápido, especialmente con grupos grandes. No creo que haga una diferencia con el escenario de "toma única" que describe, sin embargo, se tendría que hacer un estudio de tiempo formal.
Re: Pregunta sobre cómo obtener datos de una salida de trazado utilizando objetos en estructura de árbolGracias, he estado buscando documentación como esa por un tiempo. Voy a jugar un poco con él y ver cómo va. Parece sencillo pero también depende del idioma, lo que probablemente está bien para lo que necesito.
¿Por qué xpath es más eficiente que mostrar los scripts del árbol? ¿Es solo una codificación más eficiente si recupera la información más rápido? Para los fines de esta pregunta, supongamos que solo se está devolviendo un objeto, como un cuadro de imagen de distribución y que conoce su nombre o número. Si haces esto 100 o 1000 veces, ¿es uno notablemente más rápido que el otro? Parece que generar el informe en sí (antes de extraer el objeto) es donde está el tiempo de ejecución.
Re: Pregunta sobre cómo obtener datos de una salida de trazado utilizando objetos en estructura de árbolHubo un póster bastante bueno en XPath este año en la conferencia.
https://community.jmp.com/docs/DOC-8116
Pasan por algunos ejemplos de la vida real con la estructura de JMPs.
Re: Pregunta sobre cómo obtener datos de una salida de trazado utilizando objetos en estructura de árbol¡Gracias! Es obvio para mí ahora.
Veré si algún usuario usa otros idiomas y pondré algunos ganchos allí para otros idiomas que se estén usando. No será a prueba de balas, pero debería estar bien para nuestros propósitos. Gracias.
Re: Pregunta sobre cómo obtener datos de una salida de trazado utilizando objetos en estructura de árbolTal vez sea evidente lo obvio, pero tenga en cuenta que si la secuencia de comandos debe ejecutarse en múltiples entornos locales, debe tener cuidado al indexar los cuadros de visualización por sus nombres.
Re: Pregunta sobre cómo obtener datos de una salida de trazado utilizando objetos en estructura de árbolGracias, el hecho de que ese número (en mi caso 4) pudiera cambiar es algo de lo que esperaba. Su solución funciona perfectamente.
También tengo problemas para establecer los límites de especificación superior e inferior con variables (listas). Cuando uso una lista codificada como lo hice en el ejemplo, funciona bien, pero no puedo usar un elemento de lista simple. Probablemente no estoy usando la evaluación (sustituye ()) correctamente, pero en mi experiencia, esta es una de las partes más confusas de JSL.
Alguna sugerencia en como arreglar esto?
.
| | | mySpecsExpr = expr (como columna (yParamNames ) << establecer propiedad ("Límites de especificaciones", {aaa, bbb})); |
| | | show (eval (dList [1]) , eval (dList [2]) ); // <- estos evalúan bien en la ventana de registro |
| | | eval (sustituto (mySpecsExpr, expr (aaa), eval (dList [1]) , expr (bbb), eval (dList [2]) )); |
Edit: De hecho, pude resolverlo basándose en esto: 46953 - Cómo escribir propiedades de columna usando variables
Esto funciona. Pero si alguien tiene una respuesta más simple, la apreciaría.
| | | | Evaluar |
| | | | | Eval Expr ( |
| | | | | | como columna (yParamNames ) << Establecer propiedad ( |
| | | | | | | "Límites de especificaciones", |
| | | | | | | {LSL (Expr (eval (dList [1]) )), USL (Expr (eval (dList [2]) ))} //, Target (Expr (tLimit)), Show Limits (0)} |
| | | | | | ) |
| | | | | ) |
| | | | ); |
Re: Pregunta sobre cómo obtener datos de una salida de trazado utilizando objetos en estructura de árbolNo sé cuán robusta sería la numeración para esta plataforma o nodo en particular. Pero en general, la numeración no es fija, pero puede cambiar con la complejidad general del informe.
Un método alternativo para dirigir un cuadro de visualización en particular es usar su nombre. Los comodines son compatibles también. Creo que los nombres son más robustos que la numeración, porque rara vez cambian entre las versiones JMP mientras que el diseño y defecto El número de opciones puede variar según la versión y las preferencias.
yo n el contexto de su script de ejemplo, todos tres líneas a continuación devolverían el mismo resultado:
Informe ( distObj ) [ Numero Col Box ( 4 )] << obtener ;
Informe ( distObj ) [ Numero Col Box ( "% Real" )] << obtener ;
Informe ( distObj ) [ Numero Col Box ( "%?" )] << obtener ;