¿Cómo puedo crear una secuencia de comandos para enviar gráficos y datos de análisis a la revista sin ejecutar manualmente las secuencias de comandos existentes para gráficos/análisis?Hola,
Tengo un montón de scripts que utilizo para analizar los datos de prueba del producto en JMP.
Los scripts generalmente llaman a varias columnas en el archivo de datos de prueba.
Cada ejecución de prueba está etiquetada por una ID y solo esta ID cambia para extraer los datos de la nueva ejecución de prueba en JMP; los scripts utilizados para el análisis de datos siguen siendo los mismos.
Para compartir mi análisis, (actualmente) creo manualmente un paquete de diapositivas PPT con los gráficos y los datos de análisis (como la mediana y la desviación estándar, etc.).
Me gustaría pasar a la revista JMP.
Me preguntaba si es posible tener una secuencia de comandos que (ya sea ejecutando mis otras secuencias de comandos de análisis automáticamente o sin ellas) envíe los gráficos y los datos de análisis a una revista JMP. Si esto es posible, ¿podría obtener ayuda con un guión de ejemplo para armar un diario de este tipo?
Gracias.
Automatización y secuencias de comandosventanasRe: ¿Cómo creo una secuencia de comandos para enviar gráficos y datos de análisis a la revista sin ejecutar manualmente las secuencias de comandos existentes para gráficos/análisis?@ian_jmp - Desglosé el código sugerido para rastrear lo que no funciona. Parece que el problema está en la línea del bucle for
thisWindow = postWindowList[w];
que en mi caso informa en el registro (cuando se ejecuta un script simple para trazar un gráfico)
"part012 - Graph Builder"
para el primer elemento del gráfico que no está en
preWindowList
Entonces solo corriendo
Window(thisWindow) << Journal
no pone la ventana llamada
"part012 - Graph Builder"
en un archivo de diario. ¿Hay algún problema con el nombre? ¿"part012 - Graph Builder" en sí mismo debido a que este gráfico no se envía a un diario?
Re: ¿Cómo creo una secuencia de comandos para enviar gráficos y datos de análisis a la revista sin ejecutar manualmente las secuencias de comandos existentes para gráficos/análisis?@ian_jmp , Si intento de la siguiente manera, no obtengo una lista de ventanas de gráficos abiertas (en el registro) a menos que comente el bucle for (al final).
Además, no se genera ningún archivo de diario. ¿Dónde estoy cometiendo el error?
Defino una función (llamada getOpenWindowNames.jsl) y la ejecuto
Names Default To Here(1);
// Returns a list containing the names of all the currently open windows in a session
namesOfOpenWindows =
Function({}, {DefaultLocal},
openWindows = Window();
openWindowNames = {};
For(w=1, w<=NItems(openWindows), w++, InsertInto(OpenWindowNames, OpenWindows[w] << GetWindowTitle));
openWindowNames;
);Luego llame a la función anterior en otro script como
Names Default To Here(1);
//Clear Symbols();
include ("getOpenWindowNames.jsl");
// Which windows are open now?
preWindowList = namesOfOpenWindows();
// Open a table
dt = Open("$SAMPLE_DATA/Big Class.jmp");
// Find out what scripts are in the table
dts = dt << GetTableScriptNames;
// Run every script
for (s=1, s<=NItems(dts), s++, dt << runScript(dts[s]));
// Which windows are open now?
postWindowList = namesOfOpenWindows();
//// Journal the contents of each 'new' window
for(w=1, w<=NItems(postWindowList), w++,
thisWindow = postWindowList[w];
if (!Contains(preWindowList, thisWindow), Window(thisWindow) << Journal);
);
Re: ¿Cómo creo una secuencia de comandos para enviar gráficos y datos de análisis a la revista sin ejecutar manualmente las secuencias de comandos existentes para gráficos/análisis?@ian_jmp . Ahora he hecho algunas pruebas más. Esta parte de su script no funciona.
for(w=1, w<=NItems(postWindowList), w++,
thisWindow = postWindowList[w];
if (!Contains(preWindowList, thisWindow), Window(thisWindow) << Journal);
);
Todo lo que está por encima de esto en su secuencia de comandos da los resultados esperados, pero solo si comento lo anterior para el bloque de bucle.
Además, no obtengo los gráficos en el diario, por lo que solo el código sobre el aspecto parece funcionar como se esperaba, a menos que esté haciendo algo mal.
Re: ¿Cómo creo una secuencia de comandos para enviar gráficos y datos de análisis a la revista sin ejecutar manualmente las secuencias de comandos existentes para gráficos/análisis?@ian_jmp . Estoy tratando de usar su script de la siguiente manera.
He escrito un script que carga el archivo de datos y traza varios gráficos.
partID = "part012"; // specifies part ID
DataTable = getDataTable4WfrID2(partID,partID); // loads test data table corresponding to the partID and names it the same as partID
include ("allGraphPlotter.jsl"); //plots all necessary chartsEl script anterior funciona como se esperaba.
Luego (en la cuarta línea arriba), traté de incluir su secuencia de comandos como se muestra a continuación (tenga en cuenta las líneas comentadas) para enviar los gráficos al diario, pero no funciona.
¿Dónde me estoy equivocando (tal vez mi declaración de inclusión o la llamada a la función, por ejemplo, salida = nombresDeVentanasAbiertas() )?
NamesDefaultToHere(1);
// Returns a list containing the names of all the currently open windows in a session
namesOfOpenWindows =
Function({}, {DefaultLocal},
openWindows = Window();
openWindowNames = {};
For(w=1, w<=NItems(openWindows), w++, InsertInto(OpenWindowNames, OpenWindows[w] << GetWindowTitle));
openWindowNames;
);
// Which windows are open now?
preWindowList = namesOfOpenWindows();
// Open a table
//dt = Open("$SAMPLE_DATA/Big Class.jmp");
// Find out what scripts are in the table
//dts = dt << GetTableScriptNames;
// Run every script
//for (s=1, s<=NItems(dts), s++, dt << runScript(dts[s]));
// Which windows are open now?
postWindowList = namesOfOpenWindows();
// Journal the contents of each 'new' window
for(w=1, w<=NItems(postWindowList), w++,
thisWindow = postWindowList[w];
if (!Contains(preWindowList, thisWindow), Window(thisWindow) << Journal);
);
Re: ¿Cómo creo una secuencia de comandos para enviar gráficos y datos de análisis a la revista sin ejecutar manualmente las secuencias de comandos existentes para gráficos/análisis?La selección de informes específicos de su salida es bastante simple, pero bastante específica.Le sugiero que se tome el tiempo de leer la Guía de secuencias de comandos para comenzar.Luego, sus preguntas específicas sobre cómo obtener los informes precisos serán respondidas por la documentación, o podrá proporcionar una pregunta más detallada para que la responda la comunidad.
Re: ¿Cómo creo una secuencia de comandos para enviar gráficos y datos de análisis a la revista sin ejecutar manualmente las secuencias de comandos existentes para gráficos/análisis?Gracias @ian_jmp .
Su secuencia de comandos parece extremadamente útil, especialmente porque soy relativamente nuevo en JMP (proveniente de MATLAB).
Sin embargo, no entiendo tu comentario sobre "yo si los scripts no se guardan en la tabla ".
Mis scripts se guardan y no cambian para el análisis de nuevos datos de prueba (como se menciona en mi OP).
Además, solo necesito gráficos específicos de cada secuencia de comandos y solo algunos datos de análisis calculados (como la mediana y la desviación estándar, por ejemplo, no otros parámetros que JMP también calcula) para ir al diario. ¿Cómo lograr esto en JSL?
Re: ¿Cómo creo una secuencia de comandos para enviar gráficos y datos de análisis a la revista sin ejecutar manualmente las secuencias de comandos existentes para gráficos/análisis?Si no desea modificar sus scripts existentes, puede probar este tipo de enfoque. Si los scripts no se guardan en la tabla, mire la función JSL 'Include()':
NamesDefaultToHere(1);
// Returns a list containing the names of all the currently open windows in a session
namesOfOpenWindows =
Function({}, {DefaultLocal},
openWindows = Window();
openWindowNames = {};
For(w=1, w<=NItems(openWindows), w++, InsertInto(OpenWindowNames, OpenWindows[w] << GetWindowTitle));
openWindowNames;
);
// Which windows are open now?
preWindowList = namesOfOpenWindows();
// Open a table
dt = Open("$SAMPLE_DATA/Big Class.jmp");
// Find out what scripts are in the table
dts = dt << GetTableScriptNames;
// Run every script
for (s=1, s<=NItems(dts), s++, dt << runScript(dts[s]));
// Which windows are open now?
postWindowList = namesOfOpenWindows();
// Journal the contents of each 'new' window
for(w=1, w<=NItems(postWindowList), w++,
thisWindow = postWindowList[w];
if (!Contains(preWindowList, thisWindow), Window(thisWindow) << Journal);
);
Re: ¿Cómo creo una secuencia de comandos para enviar gráficos y datos de análisis a la revista sin ejecutar manualmente las secuencias de comandos existentes para gráficos/análisis?Gracias. Sí, esto me indica un enfoque que podría seguir.
Sin embargo, observo que la secuencia de comandos de carga del archivo de datos y las secuencias de comandos de trazado/análisis de gráficos, etc. deben escribirse dentro de la secuencia de comandos para generar el diario.
En mi caso, ya tengo scripts separados que cargan los datos, trazan los gráficos necesarios y generan el análisis necesario.
yo hay una manera de hacer referencia a guiones existentes desde el guión del diario sin volver a escribirlos dentro del guión del diario?
Re: ¿Cómo creo una secuencia de comandos para enviar gráficos y datos de análisis a la revista sin ejecutar manualmente las secuencias de comandos existentes para gráficos/análisis?Una búsqueda en la web de 'scripting a JMP journal' le dará más ejemplos, pero esto podría orientarlo en la dirección correcta:
Names default to here(1);
dt = Open("$SAMPLE_DATA\Big Class.jmp");
// New Journal with a couple headings
nw = New Window("My Journal", <<JOURNAL></JOURNAL>