So erstellen Sie ein Skript für eine KalibrierungskurveHallo, mein Skripting-Niveau ist wirklich grundlegend und ich hoffe, Sie können mir helfen.
Wie schreibe ich ein Skript, um Folgendes zu erreichen?
Ich habe eine Tabelle mit den bekannten Konzentrationen der Kalibratoren. In jedem Assay (eine Tabelle pro Assay) habe ich das Signal mehrerer Unbekannter sowie das Signal für die Kalibratoren, es handelt sich im Grunde genommen um eine interne Kalibrierungskurve für jeden Assay.
Ist es möglich, ein Skript zu erstellen, das die Werte aus der Tabelle der bekannten Konzentrationen übernimmt, sie gegen ihre Signale für diesen spezifischen Test (Testtabelle) aufträgt und dann die lineare Regression verwendet, um die Konzentration der Unbekannten zu berechnen?
Vielen Dank im Voraus für die Hilfe!
Betreff: So erstellen Sie ein Skript für eine KalibrierungskurveDies ist perfekt! Ich kann dir nicht genug danken, Mark.
Betreff: So erstellen Sie ein Skript für eine Kalibrierungskurve
Names Default to Here( 1 );
// check for sufficient tables
n tables = N Table();
If( n tables < 2,
Throw( "Two data tables are required for this analysis" )
);
tables = List();
For( t = 1, t <= n tables, t++,
Insert Into( tables, Eval( Data Table( t ) << Get Name ) );
);
// identify the calibration and unknown data tables
dlg = New Window( "Assay Unknown Samples", << Modal,
H List Box(
lb = List Box( tables ),
Line Up Box( N Col( 2 ),
Button Box( "Calibrator Table",
sel = lb << Get Selected;
cal lb << Append( sel );
),
cal lb = List Box( {},
N Lines( 1 )
),
Button Box( "Unknown Table",
sel = lb << Get Selected;
unk lb << Append( sel );
),
unk lb = List Box( {},
N Lines( 1 )
)
)
),
H List Box(
Button Box( "OK",
cal table = cal lb << Get Items;
Show( cal table );
unk table = unk lb << Get Items;
Show( unk table );
),
Button Box( "Cancel" )
)
);
If( dlg["Button"] == -1,
Throw( "User cancelled" )
);
// unload the dialog
cal table = Data Table( cal table[1] );
unk table = Data Table( unk table[1] );
// include AU 2 values for calibrators from calibration table
combined = cal table << Join( With( unk table ),
Copy formula( 0 ),
Select With( :Sample, :Peps, :AU 1 ),
Select( :AU 2 ),
By Matching Columns( :Peps = :Peps ),
Drop Multiples( 0, 0 ),
Include Nonmatches( 0, 1 ),
Preserve Main Table Order( 0 )
);
Close( cal table, No Save );
Close( unk table, No Save );
// distinquish peps
Current Data Table( combined );
combined << New Column( "Status", "Character", "Nominal" );
For Each Row(
:Status = If( 1 <= Num( Regex( :Peps, "\w{3}(\d+)", "\1" ) ) <= 29, "Calibrator", "Unknown" );
);
// placeholders for matching information
combined
<< New Column( "Predicted AU 2", "Numeric", "Continuous" )
<< New Column( "Lower 95%", "Numeric", "Continuous" )
<< New Column( "Upper 95%", "Numeric", "Continuous" );
// handle each sample set separatelySummarize( sample = By( combined:Sample ) );
Summarize( sample list = By( combined:Sample ) );
For( s = 1, s <= N Items( sample list ), s++,
// isolate sample
combined
<< Select Where( :Sample == sample list[s] )
<< Invert Row Selection
<< Exclude;
// fit the calibration curve for this sample
dlg = combined << Fit Model(
Y( :AU 1 ),
Effects( :AU 2 ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" ),
Where( :Status == "Calibrator" )
);
fit = dlg << Run;
// access report layer
fit rep = fit << Report;
title = fit rep[OutlineBox(1)] << Get Title;
fit rep[OutlineBox(1)] << Set Title( title || ", Sample = " || sample list[s] );
// determine the assay for the unknown samples from the calibration curve
For Each Row(
If( Not( Excluded( Row State( Row() ) ) ),
fit << Inverse Prediction( Response( :AU 1[] ) );
);
);
// remove extraneous string column box that interferes with making combined data table
(fit rep << XPath( "//StringColBox[StringColBoxHeader=\!"Type of CI\!"]")) << Delete;
// extract the assays into a new data table
assays = fit rep["Inverse Prediction"][TableBox(1)] << Make Combined Data Table;
// fit << Close Window;
// prepare predicted values for join
assays
<< Delete Columns( Column( assays, 1 ) )
<< New Column( "Sample", "Character", "NominaL" )
<< New Column( "Peps", "Character", "NominaL" );
Current Data Table( combined );
r = 1;
For Each Row(
If( Not( Excluded( Row State( Row() ) ) ),
assays:Sample[r] = combined:Sample;
assays:Peps[r] = combined:Peps;
r++;
);
);
combined << Clear Row States;
combined << Update(
With( assays ),
Match Columns(
:Sample = :Sample,
:Peps = :Peps
)
);
Close( assays, No Save );
);
Betreff: So erstellen Sie ein Skript für eine KalibrierungskurveDas ist die letzte Anfrage, versprochen!
Wie soll ich diesen Teil umschreiben, damit das Skript etwas allgemeiner ist und auf jeden Satz von Samples angewendet werden kann, unabhängig von deren Namen? Anstatt zum Beispiel zu schreiben:
Beispiel = Liste( "001-AAA", "002-AAA", "003-AAA", "004-AAA");
Können wir programmieren, um eine Zusammenfassung der Beispielspalte zu erstellen und diese Einträge abzurufen, um die Liste zu erstellen?
Es wäre auch großartig, wenn es möglich wäre, die Kalibrierungskurven mit der Bivariate-Funktion zu zeichnen und sie am Ende anzuzeigen, damit wir einen visuellen Eindruck von der durchgeführten Anpassung erhalten.
Betreff: So erstellen Sie ein Skript für eine KalibrierungskurvePerfekt!
Vielen Dank für alles, Mark!
Betreff: So erstellen Sie ein Skript für eine KalibrierungskurveDer Index wird jetzt nur noch für die Iterationszählung verwendet. Die spezifischen Beispieletiketten würden vor der Iteration in einer Liste erfasst.
// handle each sample set separately
sample = List( "001-AAA", "002-AAA", "003-AAA" );
For( s = 1, s <= 3, s++,
// isolate sample
combined
<< Select Where( :Sample == sample[s] )
<< Invert Row Selection
<< Exclude;
Betreff: So erstellen Sie ein Skript für eine KalibrierungskurveIch glaube, du hast mich missverstanden. Mit Zweifel meinte ich, dass ich die Funktion des Codes nicht verstanden habe. Ich weiß sehr, sehr wenig über Codierung und würde es nicht wagen, an Ihrem Code zu zweifeln!Ich versuche nur, dich zu verstehen und von dir zu lernen.
Ich glaube, ich verstehe das erste Beispiel.
Wenn im zweiten Beispiel die Proben anstelle von Zahlen auch eine Textbezeichnung hätten, wie würde sich der Code ändern? Anstelle der Proben 1, 2 und 3 haben wir beispielsweise die Proben 001-AAA, 002-AAA und 003-AAA?
Betreff: So erstellen Sie ein Skript für eine KalibrierungskurveDu zweifelst an meinem Code? Nun, es ist Ihr Vorrecht.
Das erste Beispiel füllt eine neue Spalte, ohne eine Spaltenformeleigenschaft zu verwenden.
For Each Row(
:Status = If( 1 <= Num( Regex( :Peps, "\w{3}(\d+)", "\1" ) ) <= 29, "Calibrator", "Unknown" );
);
Der Für jede Reihe() Die Funktion iteriert über die Zeilen der aktuellen Datentabelle. Die Indizierung von Zeilen erfolgt automatisch. Die Zuordnung erfolgt also zeilenweise. Die rechte Seite der Aufgabe ist die Wenn() Funktion. Das erste Argument wird als boolescher Ausdruck interpretiert. Wenn dieser Ausdruck „true“ ergibt, wird das zweite Argument („Calibrator“) ausgewertet und zurückgegeben. Andernfalls wird das dritte Argument („Unbekannt“) ausgewertet und zurückgegeben. Das erste Argument bestimmt, ob die Peps-Zahl im Bereich von 1 bis 29 liegt. Die Zahlenzeichenfolge wird mit einem regulären Ausdruck extrahiert und in eine Zahl umgewandelt. Der reguläre Ausdruck entspricht einem Muster aus drei Wortzeichen, gefolgt von einem oder mehreren Ziffernzeichen. Die Rückreferenz gibt die einzige erfassende Gruppe zurück.
Das zweite Beispiel iteriert über die drei Stichproben im Datensatz.
For( s = 1, s <= 3, s++,
// isolate sample
ss = Char( s );
combined
<< Select Where( :Sample == ss )
<< Invert Row Selection
<< Exclude;
Es verwendet einen ganzzahligen Index, der in eine Zeichenfolge konvertiert wird, um dem Datenspaltenattribut zu entsprechen. Es sendet eine Kaskade von Nachrichten an die kombinierte Datentabelle, um (1) alle Zeilen für die aktuelle Stichprobe auszuwählen, (2) die Auswahl auf alle Zeilen zu ändern, die nicht für die aktuelle Stichprobe gelten, und (3) diese Zeilen auszuschließen. Dieser Ansatz ist in der Regel einfacher und schneller als die Unterteilung von Datentabellen und die spätere Verknüpfung und Verkettung der Datentabellen mit den Ergebnissen.
Betreff: So erstellen Sie ein Skript für eine KalibrierungskurveEs funktioniert perfekt! Danke schön.
Ich denke, ich verstehe, was jede Codezeile tut. Ich habe diesbezüglich einige Zweifel:
<SPAN class="token function">For Each Row</SPAN><SPAN class="token punctuation">(</SPAN>
<SPAN class="token punctuation">:</SPAN>Status <SPAN class="token operator">=</SPAN> <SPAN class="token function">If</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token number">1</SPAN> <SPAN class="token operator"><=</SPAN> <SPAN class="token function">Num</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token function">Regex</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token punctuation">:</SPAN>Peps<SPAN class="token punctuation">,</SPAN> <SPAN class="token string">"\w{3}(\d+)"</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">"\1"</SPAN> <SPAN class="token punctuation">)</SPAN> <SPAN class="token punctuation">)</SPAN> <SPAN class="token operator"><=</SPAN> <SPAN class="token number">29</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">"Calibrator"</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">"Unknown"</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN><SPAN class="token function">For</SPAN><SPAN class="token punctuation">(</SPAN> s <SPAN class="token operator">=</SPAN> <SPAN class="token number">1</SPAN><SPAN class="token punctuation">,</SPAN> s <SPAN class="token operator"><=</SPAN> <SPAN class="token number">3</SPAN><SPAN class="token punctuation">,</SPAN> s<SPAN class="token operator">++</SPAN><SPAN class="token punctuation">,</SPAN>
<SPAN class="token comment">// isolate sample</SPAN>
ss <SPAN class="token operator">=</SPAN> <SPAN class="token function">Char</SPAN><SPAN class="token punctuation">(</SPAN> s <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
combined
<SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN><SPAN class="token messages"> Select Where</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token punctuation">:</SPAN>Sample <SPAN class="token operator">==</SPAN> ss <SPAN class="token punctuation">)</SPAN>
<SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN><SPAN class="token messages"> Invert Row Selection
</SPAN><SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN><SPAN class="token messages"> Exclude</SPAN><SPAN class="token punctuation">;</SPAN>
Könnten Sie sie mir bitte erklären?
Betreff: So erstellen Sie ein Skript für eine KalibrierungskurveNames Default to Here( 1 );
// check for sufficient tables
n tables = N Table();
If( n tables < 2,
Throw( "Two data tables are required for this analysis" )
);
tables = List();
For( t = 1, t <= n tables, t++,
Insert Into( tables, Eval( Data Table( t ) << Get Name ) );
);
// identify the calibration and unknown data tables
dlg = New Window( "Assay Unknown Samples", << Modal,
H List Box(
lb = List Box( tables ),
Line Up Box( N Col( 2 ),
Button Box( "Calibrator Table",
sel = lb << Get Selected;
cal lb << Append( sel );
),
cal lb = List Box( {},
N Lines( 1 )
),
Button Box( "Unknown Table",
sel = lb << Get Selected;
unk lb << Append( sel );
),
unk lb = List Box( {},
N Lines( 1 )
)
)
),
H List Box(
Button Box( "OK",
cal table = cal lb << Get Items;
Show( cal table );
unk table = unk lb << Get Items;
Show( unk table );
),
Button Box( "Cancel" )
)
);
If( dlg["Button"] == -1,
Throw( "User cancelled" )
);
// unload the dialog
cal table = Data Table( cal table[1] );
unk table = Data Table( unk table[1] );
// include AU 2 values for calibrators from calibration table
combined = cal table << Join( With( unk table ),
Copy formula( 0 ),
Select With( :Sample, :Peps, :AU 1 ),
Select( :AU 2 ),
By Matching Columns( :Peps = :Peps ),
Drop Multiples( 0, 0 ),
Include Nonmatches( 0, 1 ),
Preserve Main Table Order( 0 )
);
Close( cal table, No Save );
Close( unk table, No Save );
// distinquish peps
Current Data Table( combined );
combined << New Column( "Status", "Character", "Nominal" );
For Each Row(
:Status = If( 1 <= Num( Regex( :Peps, "\w{3}(\d+)", "\1" ) ) <= 29, "Calibrator", "Unknown" );
);
// placeholders for matching information
combined
<< New Column( "Predicted AU 2", "Numeric", "Continuous" )
<< New Column( "Lower 95%", "Numeric", "Continuous" )
<< New Column( "Upper 95%", "Numeric", "Continuous" );
// handle each sample set separately
For( s = 1, s <= 3, s++,
// isolate sample
ss = Char( s );
combined
<< Select Where( :Sample == ss )
<< Invert Row Selection
<< Exclude;
// fit the calibration curve for this sample
dlg = combined << Fit Model(
Y( :AU 1 ),
Effects( :AU 2 ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" ),
Where( :Status == "Calibrator" )
);
fit = dlg << Run;
// determine the assay for the unknown samples from the calibration curve
For Each Row(
If( Not( Excluded( Row State( Row() ) ) ),
fit << Inverse Prediction( Response( :AU 1[] ) );
);
);
// access report layer
fit rep = fit << Report;
// remove extraneous string column box that interferes with making combined data table
(fit rep << XPath( "//StringColBox[StringColBoxHeader=\!"Type of CI\!"]")) << Delete;
// extract the assays into a new data table
assays = fit rep["Inverse Prediction"][TableBox(1)] << Make Combined Data Table;
fit << Close Window;
// prepare predicted values for join
assays
<< Delete Columns( Column( assays, 1 ) )
<< New Column( "Sample", "Character", "NominaL" )
<< New Column( "Peps", "Character", "NominaL" );
Current Data Table( combined );
r = 1;
For Each Row(
If( Not( Excluded( Row State( Row() ) ) ),
assays:Sample[r] = combined:Sample;
assays:Peps[r] = combined:Peps;
r++;
);
);
combined << Clear Row States;
combined << Update(
With( assays ),
Match Columns(
:Sample = :Sample,
:Peps = :Peps
)
);
Close( assays, No Save );
);Betreff: So erstellen Sie ein Skript für eine KalibrierungskurveJa, sie haben die 29 Peps als interne Kalibratoren. Diese spezifischen 29 Peps sollten die AU 2 -Werte aus der Kalibrierungstabelle abrufen und dann jeder Satz die restlichen Peps kalibrieren, die der Probennummer zugeordnet sind.
Ich glaube, ich habe die Sache noch verwirrender gemacht, indem ich im selben Beitrag nach zwei verschiedenen Dingen gefragt habe. Das tut mir leid.
Betreff: So erstellen Sie ein Skript für eine KalibrierungskurveDie drei Sample-Sets sollten also getrennt gehandhabt werden?
Betreff: So erstellen Sie ein Skript für eine KalibrierungskurveIch glaube, ich habe zu früh gesprochen. Es gibt ein Problem, Mark. Im Moment zieht das Skript alle AU2-Werte aus der Calib-Tabelle in die Unk-Tabelle für die Kalibratoren, und das ist in Ordnung. Aber dann verwendet die neue Tabelle alle, denen die Kalibratorbezeichnung zugewiesen wurde, um sie im Anpassungsmodell zu verwenden, und die Unbekannten werden aus diesem einen Modell vorhergesagt (in dem die Kalibratoren aus Probe 1, 2 und 3 zusammengefasst sind), richtig?
Was ich brauche, ist ein Anpassungsmodell pro Stichprobe und dass die Unbekannten dieser Stichprobe nur mit dem Anpassungsmodell bestimmt werden, das dieser Stichprobe zugeordnet ist.
Betreff: So erstellen Sie ein Skript für eine KalibrierungskurveDies ist perfekt! Vielen Dank Mark!
Betreff: So erstellen Sie ein Skript für eine KalibrierungskurveOK, danke für die Klarstellung.
Names Default to Here( 1 );
// check for sufficient tables
n tables = N Table();
If( n tables < 2,
Throw( "Two data tables are required for this analysis" )
);
tables = List();
For( t = 1, t <= n tables, t++,
Insert Into( tables, Eval( Data Table( t ) << Get Name ) );
);
// identify the calibration and unknown data tables
dlg = New Window( "Assay Unknown Samples", << Modal,
H List Box(
lb = List Box( tables ),
Line Up Box( N Col( 2 ),
Button Box( "Calibrator Table",
sel = lb << Get Selected;
cal lb << Append( sel );
),
cal lb = List Box( {},
N Lines( 1 )
),
Button Box( "Unknown Table",
sel = lb << Get Selected;
unk lb << Append( sel );
),
unk lb = List Box( {},
N Lines( 1 )
)
)
),
H List Box(
Button Box( "OK",
cal table = cal lb << Get Items;
Show( cal table );
unk table = unk lb << Get Items;
Show( unk table );
),
Button Box( "Cancel" )
)
);
If( dlg["Button"] == -1,
Throw( "User cancelled" )
);
// unload the dialog
cal table = Data Table( cal table[1] );
unk table = Data Table( unk table[1] );
// include AU 2 values for calibrators from calibration table
combined = cal table << Join(
With( unk table ),
Copy formula( 0 ),
Select With( :Sample, :Peps, :AU 1 ),
Select( :AU 2 ),
By Matching Columns( :Peps = :Peps ),
Drop Multiples( 0, 0 ),
Include Nonmatches( 0, 1 ),
Preserve Main Table Order( 0 )
);
Close( cal table, No Save );
Close( unk table, No Save );
// distinquish peps
Current Data Table( combined );
combined << New Column( "Status", "Character", "Nominal" );
For Each Row(
:Status = If( 1 <= Num( Regex( :Peps, "\w{3}(\d+)", "\1" ) ) <= 29, "Calibrator", "Unknown" );
);
// fit the calibration curve
dlg = combined << Fit Model(
Y( :AU 1 ),
Effects( :AU 2 ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" ),
Where( :Status == "Calibrator" )
);
fit = dlg << Run;
// determine the assay for the unknown samples from the calibration curve
For Each Row(
fit << Inverse Prediction( Response( :AU 1[] ) );
);
// extract the assays into a new data table
assays = Report( fit )["Inverse Prediction"][TableBox(1)] << Make Combined Data Table;
fit << Close Window;
assays << Delete Columns( Column( assays, 1 ) );
// add the assays to the unknown table
final = combined << Join(
With( assays ),
Copy formula( 0 ),
By Matching Columns( :AU 1 = :Specified AU 1 ),
Drop Multiples( 0, 0 ),
Include Nonmatches( 1, 0 ),
Preserve Main Table Order( 1 )
);
Close( combined, No Save );
Close( assays, No Save );
final << Sort(
By( :Peps, :Sample ),
Order( Ascending, Ascending ),
Replace Table
);
Einige der vorhergesagten AU 2-Werte fehlen aufgrund der zufälligen Messungen von AU 1.
Betreff: So erstellen Sie ein Skript für eine KalibrierungskurveEs hat perfekt funktioniert. Und es tut, worum ich um Hilfe gebeten habe. Aber es gab zwei Teile meines ersten Beitrags. Die erste bestand darin, zu wissen, wie man die Kalibrierung per Skript durchführt, so wie Sie es mir gezeigt haben.
Das zweite, das nichts mit dem ersten zu tun hat und daher ein völlig anderes Skript wäre, besteht darin, Folgendes zu tun:
Die unbekannte Tabelle enthält 3 Proben, jede Probe wurde auf 74 Peps analysiert. 29 dieser Peps möchte ich zur Kalibrierung der anderen 45 verwenden. Und das möchte ich tun, indem ich die AU 2-Werte aus der Kalibrierungstabelle abrufe. Daher sollte das Skript die AU 2-Werte aus der Kalibrierungstabelle abrufen und sie mit den 1–29 Peps für jede Probe in der unbekannten Tabelle verbinden. Anschließend sollte es eine Kalibrierungskurve (lineare Regression) für jede Probe erstellen und AU 2 zuordnen Werte auf den Rest 45 Peps.
Vielen Dank, dass Sie mich ertragen!
Ich weiß, dass die Werte nicht korrelieren, es handelte sich um zufällig generierte Werte mit dem Zweck, das Schreiben von Skripten zu erlernen.
Betreff: So erstellen Sie ein Skript für eine KalibrierungskurveIch bin verwirrt.
Zunächst einmal: Hat es funktioniert oder nicht? Hat es bis zu einem gewissen Punkt funktioniert?
Zweitens: Ja, die Kalibrierung wird vollständig mit den AU 1- und AU 2-Werten in der Kalibrierungstabelle durchgeführt. Ist das nicht richtig?
Drittens sind in der unbekannten Tabelle keine AU2-Werte vorhanden. Wollen Sie die vorhergesagten unbekannten AU 2-Werte verwenden?
Viertens: Ist dies eine Änderung der Kalibrierungsdefinition oder handelt es sich um eine neue Anforderung (siehe Schritt), nachdem die AU vorhergesagt wurde? 2 in der unbekannten Tabelle?
Fünftens: Was ist Sample? Was hat es mit Peps zu tun?
Sechstens: Sollte AU 1 in der Kalibratortabelle für Pep1 bis Pep29 nicht korreliert sein? Sie sind nicht:

Mir fehlt wahrscheinlich etwas sehr Wichtiges und sehr Grundlegendes.
Betreff: So erstellen Sie ein Skript für eine KalibrierungskurveDanke Mark, es hat jetzt funktioniert.
Soweit ich das Skript verstanden habe, handelt es sich hierbei um die einfache Kalibrierung unter Verwendung der AU 1- und AU 2-Werte aus der Kalibratortabelle, ja?
Wie können wir es so umordnen, dass der Kalibrator die in der Kalibratortabelle angegebenen AU 1-Werte im Vergleich zu den AU 2 aus der unbekannten Tabelle ist (was es für jede Probe zu einem anderen Kalibrator macht) und dann die AU 2-Werte für die restlichen Komponenten vorhersagen? in der Probe?
Betreff: So erstellen Sie ein Skript für eine KalibrierungskurveEs handelt sich um ein Versionsproblem. Ich habe JMP 13 geöffnet und (1) die Funktion wurde nicht mehr als solche hervorgehoben und (2) sie wird nicht im Skriptindex gefunden.
Ich hasse es wenn das passiert!
Versuchen Sie diese Problemumgehung:
Names Default to Here( 1 );
// find all open data tables
/* for JMP 14 and later:
tables = Get Data Table List();
*/
n tables = N Table();
If( n tables < 2,
Throw( "Two data tables are required for this analysis" )
);
tables = List();
For( t = 1, t <= n tables, t++,
Insert Into( tables, Eval( Data Table( t ) << Get Name ) );
);
// present open tables for assignment as calibration or unknown.
dlg = New Window( "Assay Unknown Samples", << Modal,
H List Box(
lb = List Box( tables ),
Line Up Box( N Col( 2 ),
Button Box( "Calibrator Table",
sel = lb << Get Selected;
cal lb << Append( sel );
),
cal lb = List Box( {},
N Lines( 1 )
),
Button Box( "Unknown Table",
sel = lb << Get Selected;
unk lb << Append( sel );
),
unk lb = List Box( {},
N Lines( 1 )
)
)
),
H List Box(
Button Box( "OK",
cal table = cal lb << Get Items;
Show( cal table );
unk table = unk lb << Get Items;
Show( unk table );
),
Button Box( "Cancel" )
)
);
If( dlg["Button"] == -1,
Throw( "User cancelled" )
);
// unload dialog
cal table = Data Table( cal table[1] );
unk table = Data Table( unk table[1] );
// perform the linear calibration
dlg = cal table << Fit Model(
Y( :AU 1 ),
Effects( :AU 2 ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" )
);
fit = dlg << Run;
// perform inverse prediction on unknown
Current Data Table( unk table );
For Each Row(
fit << Inverse Prediction( Response( :AU 1[] ) );
);
// unload unknown assays
assays = Report( fit )["Inverse Prediction"][TableBox(1)] << Make Combined Data Table;
fit << Close Window;
assays << Delete Columns( Column( assays, 1 ) );
// join with unknown table
unk table << Join(
With( assays ),
By Row Number
);
Close( assays, No Save );
// plot predictions with 95% confidence intervals versus actual
unk table << Graph Builder(
Size( 534, 454 ),
Show Control Panel( 0 ),
Variables(
X( :AU 1 ),
Y( :Lower 95% ),
Y( :Upper 95%, Position( 1 ) ),
Y( :Predicted AU 2, Position( 1 ) )
),
Elements(
Bar( X, Y( 1 ), Y( 2 ), Y( 3 ), Legend( 8 ), Bar Style( "Interval" ) )
),
SendToReport(
Dispatch( {}, "AU 1", ScaleBox, {Format( "Best", 12 )} ),
Dispatch( {}, "Lower 95%", ScaleBox, {Format( "Fixed Dec", 12, 0 )} )
)
);Betreff: So erstellen Sie ein Skript für eine KalibrierungskurveMöglicherweise handelt es sich um ein JMP-Versionsproblem (ich habe JMP 13.1), aber das Skript funktioniert nicht. Ich habe den JSL-Debugger verwendet und erhalte gleich zu Beginn eine Fehlermeldung: Name Unresolved: Get Data Table List beim Zugriff oder bei der Auswertung von „Get Data Table List“, Get Data Table List() /*###*/
Betreff: So erstellen Sie ein Skript für eine KalibrierungskurveIch glaube, ich verstehe das Grundproblem, habe aber möglicherweise ein Detail übersehen. Probieren Sie dieses Skript aus, während beide Datentabellen geöffnet sind (Kalibrierungstabelle und Unbekannte-Tabelle):
Names Default to Here( 1 );
// find all open data tables
tables = Get Data Table List();
If( N Items( tables ) < 2,
Throw( "Two data tables are required for this analysis" )
);
dlg = New Window( "Assay Unknown Samples", << Modal,
H List Box(
lb = List Box( tables ),
Line Up Box( N Col( 2 ),
Button Box( "Calibrator Table",
sel = lb << Get Selected;
cal lb << Append( sel );
),
cal lb = List Box( {},
N Lines( 1 )
),
Button Box( "Unknown Table",
sel = lb << Get Selected;
unk lb << Append( sel );
),
unk lb = List Box( {},
N Lines( 1 )
)
)
),
H List Box(
Button Box( "OK",
cal table = cal lb << Get Items;
Show( cal table );
unk table = unk lb << Get Items;
Show( unk table );
),
Button Box( "Cancel" )
)
);
If( dlg["Button"] == -1,
Throw( "User cancelled" )
);
// unload dialog
cal table = Data Table( cal table[1] );
unk table = Data Table( unk table[1] );
// perform the linear calibration
dlg = cal table << Fit Model(
Y( :AU 1 ),
Effects( :AU 2 ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" )
);
fit = dlg << Run;
// perform inverse prediction on unknown
Current Data Table( unk table );
For Each Row(
fit << Inverse Prediction( Response( :AU 1[] ) );
);
// unload unknown assays
assays = Report( fit )["Inverse Prediction"][TableBox(1)] << Make Combined Data Table;
fit << Close Window;
assays << Delete Columns( Column( assays, 1 ) );
// join with unknown table
unk table << Join(
With( assays ),
By Row Number
);
Close( assays, No Save );
// plot predictions with 95% confidence intervals versus actual
unk table << Graph Builder(
Size( 534, 454 ),
Show Control Panel( 0 ),
Variables(
X( :AU 1 ),
Y( :Lower 95% ),
Y( :Upper 95%, Position( 1 ) ),
Y( :Predicted AU 2, Position( 1 ) )
),
Elements(
Bar( X, Y( 1 ), Y( 2 ), Y( 3 ), Legend( 8 ), Bar Style( "Interval" ) )
),
SendToReport(
Dispatch( {}, "AU 1", ScaleBox, {Format( "Best", 12 )} ),
Dispatch( {}, "Lower 95%", ScaleBox, {Format( "Fixed Dec", 12, 0 )} )
)
);
Das Skript ist nicht flexibel, aber es ist ein Anfang.
Betreff: So erstellen Sie ein Skript für eine KalibrierungskurveHier sind zwei Beispieltabellen. Eine davon ist die Kalibratortabelle. Die andere Tabelle enthält die Messwerte (AU 1) und muss kalibriert werden, um die unbekannten Werte zu erhalten (AU 2). Um die Sache etwas komplizierter zu machen, enthält diese Tabelle die Messungen für drei verschiedene Proben und jede dieser drei Proben enthielt auch die Komponenten, die zur Herstellung des Kalibrators verwendet wurden. Wir haben also in jeder Probe sozusagen einen internen Kalibrator.
Es wäre großartig zu wissen, wie man eine Kalibrierung per Skript erstellt, bei der die Tatsache, dass wir einen internen Kalibrator haben, völlig außer Acht gelassen wird (einfache, einfache lineare Regression dessen, was in der Kalibratortabelle steht, und der Ausdruck verwendet wird, um die Unbekannten aus der Probentabelle zu erhalten). Und es wäre sogar noch besser zu wissen, wie man ein Kalibrierungsskript erstellt, das die gemessenen Werte (AU 1) der Kalibratorkomponenten in jeder Probe (Probentabelle) verwendet, sie mit den bekannten Werten (AU 2) in der Kalibratortabelle grafisch darstellt und berechnet ermittelt die Unbekannten für diese spezifische Probe und macht dasselbe für jede in der Probentabelle vorhandene Probe.
Englisch ist nicht meine Muttersprache, also lassen Sie es mich bitte wissen, wenn ich etwas klarer sein soll.
Ich hoffe ihr könnt mir helfen.
Beifall.
Betreff: So erstellen Sie ein Skript für eine KalibrierungskurveVielen Dank für die Überprüfung der Analysemethode und des Analyseprozesses. Weiter zum Drehbuch!
Können Sie eine Stichprobe von Daten bereitstellen? Sie können generische Namen (anonyme Daten) verwenden. Auf diese Weise verstehe ich, was das Skript von der Datentabelle erwarten sollte.
Betreff: So erstellen Sie ein Skript für eine KalibrierungskurveDanke Mark.
Ich habe die von Ihnen genannten Schritte befolgt, um die benutzerdefinierte inverse Vorhersage zu erhalten. Ja, es ist eine lineare Regression.
Mein Problem dabei ist die begrenzte Anzahl von Unbekannten, die ich eingeben kann. Die Frage zur Skripterstellung wurde unter Berücksichtigung der Tatsache gestellt, dass ich Tausende von Unbekannten habe, und ich ging davon aus, dass die Skripterstellung für die Prozedur es mir ermöglichen würde, Werte für alle diese Unbekannten festzulegen.
Betreff: So erstellen Sie ein Skript für eine KalibrierungskurveIch schlage vor, dass Sie zunächst lernen, wie Sie diese Analyse interaktiv mit JMP durchführen. Sehen Hilfe > Bücher > Prädiktive und spezialisierte Modellierung > Kapitel über Kurve anpassen . Es wird erklärt, wie Sie diese Plattform für Ihren Zweck nutzen können. Es enthält Beispiele, die Sie anleiten und Ihnen beim Üben helfen, bevor Sie versuchen, Ihre eigenen Daten zu analysieren.
Welches Modell verwenden Sie derzeit für Ihre Kalibrierungskurve? Sie erwähnen die lineare Regression. Wenn dies der Fall ist, klicken Sie auf das rote Dreieck neben „Kurve anpassen“ und wählen Sie aus Polynome > Linear anpassen . Klicken Sie nun auf das rote Dreieck neben Linear und wählen Sie aus Benutzerdefinierte inverse Vorhersage . Es erscheint ein Dialog, in dem Sie die unbekannten Antworten eingeben können.
Nutzen Sie die Fit Curve-Plattform zunächst interaktiv, um sicherzustellen, dass diese Analyse angemessen ist und die gewünschten Ergebnisse liefert. Dann können wir mit einem Drehbuch helfen.