Tout le monde,
Malgré de nombreux exemples dans le forum, je n'arrive pas à faire fonctionner la fonction "Get As Matrix". Grâce à la fonction d'arborescence, j'ai trouvé la table de données correcte à partir de laquelle les données ("Schätzer" = "estimation") doivent être extraites, voir l'image ci-dessous. J'ai besoin des données dans les quatre lignes de NumberColBOX(8). "Get As Matrix" n'extrait rien !
Voici mon script :
"Charger le fichier de données"
....
drg = Fit Curve( Y( :Pmpp ), X( :time_ZUV ), Fit Biexponential 4P );
dgr_report = drg << Rapport ;
dgr_report << afficher l'arborescence ;
modell = dgr_report[OutlineBox(2)][TableBox(1)][StringColBox(1)] << Get();
cor_val = dgr_report[OutlineBox(2)][TableBox(1)][NumberColBox(6)] << Get();
SumFit = drg_report[OutlineBox(7)][TableBox(3)][NumberColBox(8)] << ge tAs Matrix ;
....
"Modèle d'affichage, cor_val, SumFit"
Notez que les paramètres nommés "modell" et "cor_val" sont correctement extraits de OutlineBox (2) !
Tree structure of the expo decay fitStructure arborescente de l'ajustement de la décroissance de l'expo
L'aide serait très appréciée!
Mickael
Vous trouverez ci-dessous des commentaires du script 6_XPathFind.jsl écrits pour Compagnon JSL, Applications du langage de script JMP, 2e éd. .
Cela pourrait être un point de départ pour en savoir plus.Recherchez également dans ce blog JMP plusieurs discussions et présentations concernant XPath.
/* XML -> Langage de balisage extensible
Plusieurs liens pour en savoir plus sur XPATH
https://en.wikipedia.org/wiki/XPath
https://www.w3.org/TR/xpath.html
https://www.w3.org/TR/xpath/
//Section 6 - Plus de syntaxe XPath
/* notes et exemples basés sur https://www.tutorialspoint.com/xpath/xpath_quick_guide.htm
node-name Sélectionnez tous les nœuds portant le nom "nodename". Les noms de nœud dans JMP sont des noms de classe DisplayBox :
OutlineBox, TableBox, StringColBox, NumberColBox, TabBox, TabPageBox, AxisBox, FrameBox, etc.
/ La sélection commence à partir du nœud racine
// La sélection commence à partir du nœud actuel qui correspond à la sélection
. Sélectionne le nœud actuel
.. Sélectionne le parent du nœud courant
@ Sélectionne les attributs
TableBox Exemple - Sélectionne tous les nœuds (affichage) avec le nom (nom de classe) "TableBox"
Exemple AxisBox/TextBox - Sélectionne tous les éléments textBox qui sont des enfants d'un AxisBox
//node-name Example - //TableBox sélectionne tous les affichages TableBox, peu importe où ils se trouvent dans le rapport JMP
----caractères génériques----
* utilisé pour correspondre à n'importe quel nœud.
.utilisé pour faire correspondre le nœud actuel dans le contexte.
@*utilisé pour correspondre à n'importe quel attribut
----prédicats---- Expression entre crochets pour filtrer/restreindre la sélection
Exemples [n] [Dernier()] [@NumberColBoxItem > 20]
----fonctions de chaîne les plus utiles----
starts-with(string1, string2) Renvoie true lorsque la première chaîne commence par la deuxième chaîne.
contains(string1, string2) Renvoie true lorsque la première chaîne contient la deuxième chaîne.
substring(string, offset, length?) Renvoie une section de la chaîne. La section commence au décalage jusqu'à la longueur fournie.
substring-before(string1, string2) Renvoie la partie de string1 avant la première occurrence de string2.
substring-after(string1, string2) Renvoie la partie de string1 après la première occurrence de string2.
position() Fournit la position du nœud.
last() Sélectionne le dernier nœud relatif au nœud actuel ;
count est également disponible, cependant, JMP renvoie une liste de résultats et les nitems JMP (résultat) sont tout aussi simples
//nodename Trouver toutes les boîtes avec ce nom est probablement le plus utile
Pour le F il Courbe() plate-forme il y a une option pour Créer une table de paramètres , qui pourraient vous être utiles. iI est une option Fit[n] (message).
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Nonlinear Examples/Bioassay.jmp" );
obj = Fit Curve( Y( :Toxicity ), X( :log Conc ), Group( :formulation ) );
obj << Fit Logistic 4P;
ptbl = obj << (Fit[1] << Make Parameter Table);
Vous pouvez adresser une boite d'affichage avec son numéro "absolu" mais si dans un contexte hiérarchique leurs numéros relatifs doivent être utilisés. Dans votre exemple, il n'y a qu'un seul TableBox et trois NumberColBox dans OutLineBox(7), et JMP ne parviendra donc pas à trouver un troisième TableBox.
Vous trouverez ci-dessous quatre méthodes différentes mais équivalentes pour extraire la matrice. Le premier utilise la numérotation absolue, les deuxième et troisième utilisent la numérotation relative et le dernier utilise xpath pour identifier le NumberColBox en fonction de son titre
SumFit = drg_report[Number Col Box(8)] << Get As Matrix;
SumFit = drg_report[Outline Box(7)][1][2] << Get As Matrix;
SumFit = drg_report[Outline Box(7)][Table Box(1)][Number Col Box(1)] << Get As Matrix;
SumFit = (drg_report << xpath("//NumberColBox[NumberColBoxHeader ='Estimate']"))[1] << Get As Matrix;