Alle,
Trotz vieler Beispiele im Forum bekomme ich die "Get As Matrix" Funktion nicht zum Laufen. Dank der Baumfunktion habe ich die richtige Datentabelle gefunden, aus der die Daten ("Schätzer" = "Schätzung") extrahiert werden müssen, siehe Bild unten. Ich brauche die Daten in den vier Zeilen von NumberColBOX(8). "Get As Matrix" extrahiert einfach nichts!
Hier ist mein Skript:
"Datendatei laden"
....
drg = Fit Curve( Y( :Pmpp ), X( :time_ZUV ), Fit Biexponential 4P );
dgr_report = drg << Bericht;
dgr_report << Baumstruktur anzeigen;
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;
....
"Modell anzeigen, cor_val, SumFit"
Beachten Sie, dass die Parameter namens "modell" und "cor_val" korrekt aus OutlineBox (2) extrahiert werden!
Tree structure of the expo decay fitBaumstruktur der Expo Decay Fit
Hilfe wäre sehr willkommen!
Michael
Unten sind Kommentare aus dem Skript 6_XPathFind.jsl, für das geschrieben wurde JSL Companion, Anwendungen der JMP-Skriptsprache, 2. Auflage .
Dies könnte ein Ausgangspunkt sein, um mehr zu erfahren.Suchen Sie auch in diesem JMP-Blog nach mehreren Diskussionen und Präsentationen zu XPath.
/* XML -> eXstensible Markup Language
Mehrere Links, um mehr über XPATH zu erfahren
https://en.wikipedia.org/wiki/XPath
https://www.w3.org/TR/xpath.html
https://www.w3.org/TR/xpath/
//Abschnitt 6 - Weitere XPath-Syntax
/* Anmerkungen und Beispiele basierend auf https://www.tutorialspoint.com/xpath/xpath_quick_guide.htm
node-name Wählt alle Knoten mit dem gegebenen Namen "nodename" aus Knotennamen in JMP sind DisplayBox-Klassennamen:
OutlineBox, TableBox, StringColBox, NumberColBox, TabBox, TabPageBox, AxisBox, FrameBox usw.
/ Die Auswahl beginnt am Stammknoten
// Die Auswahl beginnt am aktuellen Knoten, der der Auswahl entspricht
. Wählt den aktuellen Knoten aus
.. Wählt den übergeordneten Knoten des aktuellen Knotens aus
@ Wählt Attribute aus
TableBox Beispiel − Wählt alle Knoten (Anzeige) mit dem Namen (Klassenname) „TableBox“
AxisBox/TextBox-Beispiel − Wählt alle textBox-Elemente aus, die Kinder einer AxisBox sind
//node-name Beispiel - //TableBox wählt alle TableBox-Anzeigen aus, unabhängig davon, wo sie sich im JMP-Bericht befinden
----Platzhalter----
* Wird verwendet, um einen beliebigen Knoten abzugleichen.
.Wird verwendet, um den aktuellen Knoten im Kontext abzugleichen.
@*verwendet, um ein beliebiges Attribut abzugleichen
----Prädikate---- Ausdruck in eckigen Klammern zum Filtern/Einschränken der Auswahl
Beispiele [n] [Last()] [@NumberColBoxItem > 20]
----die nützlichsten String-Funktionen----
starts-with(string1, string2) Gibt wahr zurück, wenn der erste String mit dem zweiten String beginnt.
contains(string1, string2) Gibt wahr zurück, wenn der erste String den zweiten String enthält.
substring(string, offset, length?) Gibt einen Abschnitt des Strings zurück. Der Abschnitt beginnt am Versatz bis zur angegebenen Länge.
substring-before(string1, string2) Gibt den Teil von string1 zurück, der vor dem ersten Vorkommen von string2 liegt.
substring-after(string1, string2) Gibt den Teil von string1 nach dem ersten Vorkommen von string2 zurück.
position() Liefert die Position des Knotens.
last() Wählt den letzten Knoten relativ zum aktuellen Knoten aus;
count ist ebenfalls verfügbar, JMP gibt jedoch eine Ergebnisliste zurück, und JMP nitems(result) ist genauso einfach
//nodename Finde alle Boxen mit diesem Namen ist wahrscheinlich am nützlichsten
Für die F es Kurve () Plattform gibt es eine Option zu Parametertabelle erstellen , die Sie vielleicht nützlich finden. iI ist eine Fit[n]-Option (Nachricht).
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);
Sie können Anzeigeboxen mit ihrer "absoluten" Nummer adressieren, in einem hierarchischen Kontext sollten jedoch ihre relativen Nummern verwendet werden. In Ihrem Beispiel gibt es nur eine TableBox und drei NumberColBoxes in OutLineBox(7), und JMP findet daher keine dritte TableBox.
Nachfolgend sind vier verschiedene, aber äquivalente Methoden zum Extrahieren der Matrix aufgeführt. Die erste verwendet eine absolute Nummerierung, die zweite und dritte eine relative Nummerierung und die letzte verwendet XPath um die NumberColBox anhand ihres Titels zu identifizieren
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;