Erreur étrange lors de l'exécution de JSL en tant que complément ou script.Salut tout le monde,
J'ai un script que j'ai écrit et que j'ai transformé en complément. Les choses fonctionnaient très bien la dernière fois que je l'ai utilisé, vers novembre 2023. Je l'exécute à nouveau et j'obtiens une erreur très étrange qui se produit lorsque je l'exécute en tant que complément, mais ce n'est pas le cas. Cela n'arrive pas lorsque j'exécute simplement le fichier JSL seul.
Ainsi, le script exécute une modélisation et génère une fenêtre de sortie censée afficher les résultats de chaque réglage sous forme graphique et sous forme de tableau. Le résultat est censé ressembler à ceci (cela a été exécuté à partir du script lui-même) :

La fenêtre de sortie est générée à partir d'un tableau de données qui rassemble toutes les statistiques d'ajustement de la plateforme de modélisation.

Encore une fois, le script fonctionne très bien et fait tout ce qu'il est censé faire. Lorsque je le crée ensuite sous forme de fichier jmpaddin et que je l'installe dans JMP, quelque chose se produit et le code est confus, et au lieu de référencer la table de sortie, il revient à la table de données d'origine qui contient mes Y et X que j'utilise. pour le modelage. Par conséquent, la partie du générateur de graphiques de la fenêtre de sortie est vide et j'obtiens une erreur de JMP indiquant que la colonne :Tune Run n'existe pas (elle n'existe pas dans la table de données d'origine, mais elle existe dans la table de données de sortie). ).
Il s'agit du résultat du même type de modélisation, mais en l'exécutant en tant que complément au lieu du JSL -- pas de générateur de graphiques :

Et, lorsque vous accédez à la liste des fenêtres dans la fenêtre d'accueil de JMP, vous pouvez voir que pour l'instance où je l'ai exécuté en tant que complément, la fenêtre Bootstrap Forest Results a été générée à partir de la table de données d'origine T20-XL. Donc naturellement, il n'y a pas de colonne :Tune Run dans cette table de données. Mais, lorsque je l'exécute en tant que JSL direct, il génère correctement la fenêtre de sortie (Bootstrap Forest Results 2) à partir de la table de données de sortie récapitulative, comme prévu.

Voici l'erreur que j'obtiens :

Et le rapport de journal montre ce qui suit :


Je n'arrive pas à comprendre ce qui ne va pas et pourquoi la version du complément essaie de fonctionner avec la table de données d'origine au lieu de la table de données de sortie récapitulative comme elle est censée le faire. Je ne comprends pas non plus pourquoi cela fonctionnerait en l'exécutant directement à partir du fichier JSL, mais en tant que complément, cela ne fonctionne pas du tout.
Quelqu'un d'autre a-t-il rencontré ce problème ? Si oui, comment l’avez-vous corrigé et avez-vous pu comprendre comment cela s’est produit en premier lieu ?
Merci!,
DS
Automatisation et scriptsExploration et visualisation des donnéesModélisation prédictive et apprentissage automatiqueles fenêtresRe: Erreur étrange lors de l'exécution de JSL en tant que module complémentaire plutôt qu'en tant que script.Salut @Craige_Hales ,
Je suppose que le problème vient de ce que vous avez décrit. La fenêtre de résultats finale générée par mon code comporte bien des boutons permettant d'effectuer certaines actions, comme relancer l'ajustement d'un modèle ou redémarrer le code. Et, puisque le fichier JSL s'exécute correctement mais pas l'extension, cela doit être lié à l'évaluation dont vous parliez.
Ce que je ne comprends pas, c'est pourquoi cela dysfonctionne maintenant alors que cela fonctionnait parfaitement auparavant. De plus, je ne sais pas comment résoudre ce problème car j'ignore ce qui l'a déclenché. Comme indiqué, tout fonctionnait correctement vers octobre 2023.
Mon code se compose essentiellement d'une série d'appels à la fonction `Expr()` qui sont exécutés en fonction des interactions de l'utilisateur. Je peux vous le partager si vous souhaitez essayer de reproduire l'erreur.
Un paramètre JMP modifié pourrait-il être à l'origine de ce problème ? J'aimerais trouver une solution, car je préfère l'exécuter comme un module complémentaire plutôt qu'avec JSL.
Merci!,
DS
Re : Erreur étrange lors de l'exécution de JSL en tant que module complémentaire ou script.Salut @jthi ,
Je crée mon module complémentaire de la manière habituelle : je crée un fichier .def, je l'installe, puis je modifie la barre d'outils selon les besoins. J'exécute mes modules complémentaires comme d'habitude. J'ai essayé de modifier l'espace de noms « Here » en décochant ou en cochant la case, mais cela ne semble pas résoudre le problème.
Après vérification, je ne peux plus exécuter le module complémentaire lors d'une seule instance de JMP. J'obtiens toujours les mêmes erreurs. C'est peut-être dû au commentaire de @Craige_Hales , mais si c'est le cas, je ne sais pas comment résoudre le problème ni pourquoi un changement soudain a provoqué un dysfonctionnement du module complémentaire. Comme mentionné précédemment, le JSL fonctionne parfaitement.
Merci!,
DS
Re : Erreur étrange lors de l'exécution de JSL en tant que module complémentaire ou script.Voir aussi « Bug ou Fonctionnalité ? » ; il semble que vous rencontriez un contexte d'évaluation différent de celui utilisé ultérieurement pour le module complémentaire, même si votre description ne m'en donne pas la certitude. La table de données actuelle de JMP est connue dans un contexte d'évaluation. En général, un script utilise un contexte d'évaluation unique, appartenant soit à la fenêtre JSL, soit à une fenêtre de plateforme. Un script de module complémentaire s'exécute sans l'un ni l'autre, ce qui en fournit un transitoire. Lorsque le script du module complémentaire se termine (probablement jusqu'à la fin), le contexte d'évaluation transitoire disparaît. Si une fenêtre est restée ouverte et que les boutons de cette fenêtre exécutent d'autres scripts, ils utilisent le contexte d'évaluation de la fenêtre, qui ignore le précédent.
Re : Erreur étrange lors de l'exécution de JSL en tant que module complémentaire ou script.Comment construisez-vous votre module complémentaire ? Peut-être que forcer cet espace de noms le fait échouer en tant que module complémentaire (je ne vois pas pourquoi cela ne se serait pas produit plus tôt) ?

Re : Erreur étrange lors de l'exécution de JSL en tant que complément ou script.Salut @jthi ,
Oui, je peux, mais je pense que le problème est quelque chose de différent : quelque chose avec l'allocation et l'affectation de mémoire.
La raison pour laquelle je pense que c'est parce que j'exécute deux instances de JMP Pro sur ma machine. j'ai donc deux fenêtres d'accueil JMP - l'original, puis une autre avec [2] ajouté au nom de la fenêtre d'accueil. Lorsque j'essaie d'exécuter le complément dans la deuxième instance de JMP, j'obtiens l'erreur, mais pas lorsque je l'exécute dans la première instance de JMP. Je pense qu'il y a un bug qui ne gère pas correctement les choses lors de l'exécution d'une deuxième instance de JMP.
Avant, cela ne se faisait pas. J'exécute souvent deux instances de JMP, l'une pour travailler sur les données en arrière-plan et l'autre pour pouvoir travailler sur les nouvelles données que les gens me fournissent. J'essaie d'exécuter la modélisation dans la deuxième instance de sorte que si je double-clique sur un fichier jmp, il s'ouvrira dans la première instance de JMP et me permettra de travailler dessus avec la modélisation exécutée en arrière-plan de l'autre instance. . Je pense que quelque chose a pu se produire dans la dernière mise à jour de JMP car ce problème n'a jamais été rencontré auparavant.
Merci!,
DS
Re : Erreur étrange lors de l'exécution de JSL en tant que complément ou script.Pouvez-vous envoyer le message Graph Builder à une table de données spécifique ?
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Variables(X(:weight), Y(:height), Overlay(:sex)),
Elements(Points(X, Y, Legend(9)), Line Of Fit(X, Y, Legend(11)))
);
dt << Générateur de graphiques (...