Comment créer un script pour envoyer des graphiques et des données d'analyse au journal sans exécuter manuellement les scripts existants pour les graphiques/analyses ?Salut,
J'ai un tas de scripts que j'utilise pour analyser les données de test du produit dans JMP.
Les scripts appellent généralement plusieurs colonnes dans le fichier de données de test.
Chaque exécution de test est marquée par un ID et seul cet ID change pour extraire les nouvelles données d'exécution de test dans JMP - les scripts utilisés pour l'analyse des données restent les mêmes.
Pour partager mon analyse, je crée (actuellement) manuellement un pack de diapositives PPT avec les graphiques et les données d'analyse (telles que médiane et std-dev, etc.).
Je souhaite passer au journal JMP.
Je me demandais s'il était possible d'avoir un script qui (soit en exécutant mes autres scripts d'analyse automatiquement ou sans) enverrait les graphiques et les données d'analyse à un journal JMP ? Si cela est possible, pourrais-je obtenir de l'aide avec un exemple de script pour créer un tel journal ?
Merci.
Automatisation et scriptles fenêtresRe : Comment créer un script pour envoyer des graphiques et des données d'analyse au journal sans exécuter manuellement les scripts existants pour les graphiques/analyses ?@ian_jmp - J'ai décomposé votre code suggéré pour retrouver ce qui ne fonctionne pas. Il semble que le problème se situe dans la ligne de la boucle for
thisWindow = postWindowList[w];
qui dans mon cas rapporte dans le journal (lorsqu'un simple script est exécuté pour tracer un graphique)
"part012 - Graph Builder"
pour le premier élément du graphique qui n'est pas dans
preWindowList
Alors juste courir
Window(thisWindow) << Journal
ne met pas la fenêtre appelée
"part012 - Graph Builder"
dans un fichier journal. Y a-t-il un problème avec le nom "part012 - Graph Builder" lui-même à cause duquel ce graphique n'est pas envoyé à un journal ?
Re : Comment créer un script pour envoyer des graphiques et des données d'analyse au journal sans exécuter manuellement les scripts existants pour les graphiques/analyses ?@ian_jmp , Si j'essaie de la manière suivante, je n'obtiens pas de liste des fenêtres de graphique ouvertes (dans le journal) à moins que je ne commente la boucle for (à la fin).
De plus, aucun fichier journal n'est généré. Où est-ce que je fais l'erreur ?
Je définis une fonction (appelée getOpenWindowNames.jsl) et l'exécute
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;
);Appelez ensuite la fonction ci-dessus dans un autre script comme
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 : Comment créer un script pour envoyer des graphiques et des données d'analyse au journal sans exécuter manuellement les scripts existants pour les graphiques/analyses ?@ian_jmp . J'ai maintenant fait d'autres tests. Cette partie de votre script ne fonctionne pas.
for(w=1, w<=NItems(postWindowList), w++,
thisWindow = postWindowList[w];
if (!Contains(preWindowList, thisWindow), Window(thisWindow) << Journal);
);
Tout ce qui précède dans votre script donne les résultats attendus, mais seulement si je commente le bloc de boucle for ci-dessus.
De plus, je ne mets pas les graphiques dans le journal, donc seul le code au-dessus des apparences semble fonctionner comme prévu, sauf si je fais quelque chose de mal.
Re : Comment créer un script pour envoyer des graphiques et des données d'analyse au journal sans exécuter manuellement les scripts existants pour les graphiques/analyses ?@ian_jmp . J'essaie d'utiliser votre script de la manière suivante.
J'ai écrit un script qui charge le fichier de données et trace divers graphiques.
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 chartsLe script ci-dessus fonctionne comme prévu.
Ensuite (à la quatrième ligne ci-dessus), j'ai essayé de inclure votre script comme ci-dessous (notez les lignes commentées) pour envoyer les graphiques au journal mais ne fonctionne pas.
Où est-ce que je me trompe (peut-être mon instruction include ou l'appel de fonction, par exemple output = nomsDeFenêtresOuvrir() ) ?
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 : Comment créer un script pour envoyer des graphiques et des données d'analyse au journal sans exécuter manuellement les scripts existants pour les graphiques/analyses ?La sélection de rapports spécifiques à partir de votre sortie est assez simple, mais assez spécifique.Je vous suggère de prendre le temps de lire le Guide de création de scripts pour commencer.Ensuite, vos questions spécifiques sur la façon d'obtenir des rapports précis trouveront soit une réponse dans la documentation, soit vous pourrez fournir une question plus détaillée à laquelle la communauté pourra répondre.
Re : Comment créer un script pour envoyer des graphiques et des données d'analyse au journal sans exécuter manuellement les scripts existants pour les graphiques/analyses ?Merci @ian_jmp .
Votre script semble extrêmement utile, d'autant plus que je suis relativement nouveau dans JMP (venant de MATLAB)..
Cependant, je ne comprends pas votre commentaire sur "je f les scripts ne sont pas enregistrés dans la table ".
Mes scripts sont enregistrés et ne changent pas pour l'analyse des nouvelles données de test (comme mentionné dans mon OP).
De plus, je n'ai besoin que de graphiques spécifiques de chaque script et de quelques données d'analyse calculées (telles que la médiane et std-dev par exemple, pas d'autres paramètres que JMP calcule également) pour accéder au journal. Comment y parvenir en JSL ?
Re : Comment créer un script pour envoyer des graphiques et des données d'analyse au journal sans exécuter manuellement les scripts existants pour les graphiques/analyses ?Si vous ne souhaitez pas modifier vos scripts existants, vous pouvez essayer ce type d'approche. Si les scripts ne sont pas enregistrés dans la table, regardez la fonction 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 : Comment créer un script pour envoyer des graphiques et des données d'analyse au journal sans exécuter manuellement les scripts existants pour les graphiques/analyses ?Merci. Oui, cela m'indique une approche que je pourrais suivre.
Cependant, je note que le script de chargement du fichier de données et les scripts de tracé/analyse de graphique, etc. doivent être écrits dans le script pour générer le journal.
Dans mon cas, j'ai déjà des scripts séparés qui chargent les données, tracent les graphiques nécessaires et génèrent l'analyse nécessaire.
J'ai un moyen de référencer les scripts existants depuis le script du journal sans les écrire à nouveau dans le script du journal ?
Re : Comment créer un script pour envoyer des graphiques et des données d'analyse au journal sans exécuter manuellement les scripts existants pour les graphiques/analyses ?Une recherche sur le Web pour "écrire un journal JMP" vous donnera plus d'exemples, mais cela pourrait vous orienter dans la bonne direction :
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>