Benötigen Sie Hilfe bei der Skripterstellung – Lineare Anpassung, bei der die Steigung am größten ist<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich untersuche das Wachstum eines Bakteriums in flüssigem Wachstumsmedium in den Vertiefungen einer 96-Well-Platte. Ich möchte die maximale Wachstumsrate erreichen, also die Steigung einer geraden Linie in der exponentiellen Wachstumsphase, wie folgt:

Was ich tun muss, ist, die Daten aus beiden Richtungen zu schneiden, damit die Linie zu den 10 Datenpunkten passt, die die größte Steigung haben.

In jeder meiner Datentabellen sind 96 dieser Kurven mit einer Buchstaben-Zahlen-Bezeichnung („Well“) gekennzeichnet.

Die Y-Achsen-Daten sind natürlich logarithmisch transformiert „(Ln OD 600“) und die X-Achsen-Daten sind in Stunden („Zeit [Std.]“). Derzeit habe ich ein Skript geschrieben, das die Plattform „Fit Y by Ich erhalte also einen Bericht mit 96 verschiedenen Diagrammen, in jedes Diagramm wird eine Linie eingefügt, ein lokaler Datenfilter mit „Zeit [Std.]“ geöffnet und auf 10 Datenpunkte/passende Zeilen reduziert.

Dann muss ich diesen Filter/Schieberegler manuell über die Zeit verschieben, um die größte Steigung der Linie zu finden. Ich habe ein paar Hundert der Datendateien, daher nimmt die Erstellung eine Menge Zeit in Anspruch!

Ich versuche, ein Skript zu schreiben, das den Schieberegler automatisch über die Zeit bewegt und die größte Steigung der Linie ermittelt. Leider gehören Skripting und Codierung nicht zu meinen Fähigkeiten, sodass ich ratlos bin. Ich habe mein JSL-Skript ab sofort angehängt. Vielen Dank für jede Hilfe oder Idee!
Betreff: Benötigen Sie Hilfe bei der Skripterstellung – Lineare Anpassung, bei der die Steigung am größten ist
Hallo Jim -
Wie würden Sie das Skript ändern, um die größte Steigung der im obigen Diagramm dargestellten Daten im Verlauf des Bereichs zu ermitteln?Ich habe versucht, Ihr Skript zu ändern, aber es hat keine Zeilen ordnungsgemäß ausgeschlossen. Es hat das gleiche Format wie das OP.Jeder „Well“ hat eine ähnliche Wellenform.
Danke,
Drew
Betreff: Benötigen Sie Hilfe bei der Skripterstellung – Lineare Anpassung, bei der die Steigung am größten istJim,
Das ist wunderbar! Ich habe es mit einem vollständigen Datensatz ausgeführt und die vom Skript berechneten Liniensteigungen korrelieren mit den manuell berechneten Steigungen mit einem R-Quadrat von 0,98. Ich vermute, dass die geringe Abweichung auf den Fehler bei der manuellen Berechnung zurückzuführen ist. Ich werde noch mehr damit machen, aber das scheint genau das zu sein, was ich brauchte!Sobald ich es mit einigen meiner bereits analysierten Datendateien ausgeführt habe, werde ich noch einmal über seine Leistung berichten.
Vielen Dank für die Hilfe,
Nathan
Betreff: Benötigen Sie Hilfe bei der Skripterstellung – Lineare Anpassung, bei der die Steigung am größten istProbieren Sie dieses Skript mit Ihren Daten aus und prüfen Sie, ob es Ihren Wünschen näher kommt:
Namen standardmäßig hier ( 1 ) ;
// öffne die Datentabelle
dt = Aktuelle Datentabelle () ;
Zusammenfassen ( dt , Nun, Liste = von ( : Also ) ) ;
dt << Farbe nach Spalte ( : Also ) ;
// Durchlaufe die Daten jedes Wells und finde die besten 10 zusammenhängenden Punkte
// mit der besten Steigung
Für ( ich = 1 , ich <= N Artikel ( Nun, Liste ) , ich ++,
// Richten Sie die Listen so ein, dass sie die ermittelten 10 Datenpunkte mit der höchsten Steigung enthalten
dt << Wählen Sie wo aus ( : Also == Nun, Liste [ ich ] ) ;
bestbeta = 0 ;
startrow = 0 ;
ihr = : Ln AD 600 [ dt << Holen Sie sich ausgewählte Zeilen ] ;
xall = : Zeit [ dt << Holen Sie sich ausgewählte Zeilen ] ;
Für ( k = 1 , k <= N Zeilen ( xall ) - 10 , k ++,
X = xall [ k :: k + 9 ] ;
X = J ( N-Reihe ( X ) , 1 , 1 ) || X ;
j = ihr [ k :: k + 9 ] ;
// Regressionsberechnungen
xpxi = Invers ( X ` * X ) ;
Beta = xpxi * X ` * j ;
Wenn ( Abs ( Beta [ 2 ] ) > bestbeta ,
bestbeta = Abs ( Beta [ 2 ] ) ;
startrow = ( dt << Holen Sie sich ausgewählte Zeilen )[ k ] ;
) ;
) ;
Für ( k = Mindest ( dt << Holen Sie sich ausgewählte Zeilen ) , k <= Max ( dt << Holen Sie sich ausgewählte Zeilen ) , k ++,
Wenn ( startrow <= k <= startrow + 9 ,
Zeilenstatus ( k ) = Ausgeschlossener Staat ( 0 ) , Zeilenstatus ( k ) = Ausgeschlossener Staat ( 1 )
) ;
) ;
) ;
// Erstelle die grafische Ausgabe
Bivariat ( Y ( : Ln AD 600 ) , X ( : Zeit ) , Gruppiere nach ( : Also ) , Linie anpassen ( 1 ) ) ;
Betreff: Benötigen Sie Hilfe bei der Skripterstellung – Lineare Anpassung, bei der die Steigung am größten istJim,
Wunderbar, Danke! Das habe ich wohl nicht deutlich gemacht. Dies ist mein erster Ausflug in die Skripterstellung. Ich schätze die Hilfe,
Nathan
Betreff: Benötigen Sie Hilfe bei der Skripterstellung – Lineare Anpassung, bei der die Steigung am größten istMein Fehler war, dass ich dachte, dass sich die unterschiedlichen Well-Werte jeweils in unterschiedlichen Spalten befänden.Es wird kein großes Projekt sein, das Skript an Ihre Bedürfnisse anzupassen.Ich werde es erst morgen Nachmittag schaffen, aber dann werde ich es Ihnen zukommen lassen.
Betreff: Benötigen Sie Hilfe bei der Skripterstellung – Lineare Anpassung, bei der die Steigung am größten istJim,
Vielen Dank für die Antwort und Gedanken! Ich konnte das Skript ändern, um es auf meine Tabelle anzuwenden, und es ausführen. Allerdings muss die Linie tatsächlich für jede Kurve geeignet sein, wenn jede Kurve mit der Zeit als x-Achse aufgetragen wird. Dann muss ich 10 zusammenhängende Punkte (zeitlich zusammenhängend) auswählen, die die größte Steigung erzeugen. Es tut mir leid, wenn mir das nicht klar war. Wenn zwischen den einzelnen Punkten 10 Minuten liegen, suche ich grundsätzlich nach dem 100-Minuten-Zeitraum, der die größte Steigung der Linie aufweist.
Hier ist ein Schnappschuss meiner Datenblätter. Grundsätzlich gibt es in der Spalte „Well“ 96 Buchstaben-Zahlen-Kombinationskennungen. Jeder Bezeichner hat etwa 140 Zeilen. Dann trage ich die „Zeit [Std.]“ auf das x und die „OD 600“ auf das y ein, „Well“ in das Feld „By“. Hilft das?

Hier ist das Dialogfeld:

Vielen Dank für die Hilfe!
~Nathan
Betreff: Benötigen Sie Hilfe bei der Skripterstellung – Lineare Anpassung, bei der die Steigung am größten istHier ist ein Skript, von dem ich glaube, dass es das tun wird, was Sie wollen.Es wird als Beispiel unter Verwendung der JMP-Beispieldatentabelle „Big Class“ eingerichtet.Wenn Sie das Skript jedoch nur auf die Datentabelle verweisen, die Sie ausführen möchten, und Y Var = "age"; auf die Y-Spalte, gegen die Sie laufen möchten, sollten Sie das bekommen, was Sie wollen.Das Skript geht von zwei Annahmen aus. Die erste besteht darin, dass alle numerischen, fortlaufenden Spalten in der Datentabelle analysiert werden sollen. und die zweite Annahme ist, dass die Daten in den Spalten nach der X-Variablen geordnet sind.Ist dies nicht der Fall, kann das Skript geändert werden, um diese Situation zu bewältigen.Es erhöht lediglich die Bearbeitungszeit Ich habe das Skript geändert, um die Sortierung durchzuführen.
Namen standardmäßig hier ( 1 ) ;
// öffne die Datentabelle
dt = Offen ( „$SAMPLE_DATA/Big Class.jmp“ ) ;
Y Var = "Alter" ;
// Daten in Matrizen übertragen
ColList = dt << Spaltennamen abrufen ( kontinuierlich , Zeichenfolge ) ;
// Die Y-Variable aus der Liste entfernen
ColList = Entfernen ( ColList , Enthält ( ColList , Y Var ) , 1 ) ;
// Richten Sie die Listen so ein, dass sie die ermittelten 10 Datenpunkte mit der höchsten Steigung enthalten
Beste Daten = {} ;
Beste Ys = {} ;
Spaltennamen = {} ;
bestbeta = 0 ;
startrow = 0 ;
// Schleife über die Spalten
Für ( ich = 1 , ich <= N Artikel ( ColList ) , ich ++,
// Sortieren Sie die Daten, um sicherzustellen, dass die Daten in aufsteigendem X vorliegen
dt << Sortieren ( von ( Collist [ ich ] ) , Befehl ( aufsteigend ) , Tisch ersetzen ( 1 ) ) ;
ihr = Spalte ( Y Var ) << getValues ;
xall = ( Spalte ( dt , collist [ ich ] ) << getValues ) ;
Für ( k = 1 , k <= N Zeilen ( xall ) - 10 , k ++,
X = xall [ k :: k + 9 ] ;
X = J ( N-Reihe ( X ) , 1 , 1 ) || X ;
j = ihr [ k :: k + 9 ] ;
// Regressionsberechnungen
xpxi = Invers ( X ` * X ) ;
Beta = xpxi * X ` * j ;
Wenn ( Abs ( Beta [ 2 ] ) > bestbeta ,
bestbeta = Abs ( Beta [ 2 ] ) ;
startrow = k ;
) ;
) ;
Beste Daten = Beste Daten || Als Liste ( xall [ startrow :: startrow + 9 ] ) ;
Beste Ys = Beste Ys || Als Liste ( ihr [ startrow :: startrow + 9 ] ) ;
Für ( k = 1 , k <= 10 , k ++,
Einfügen in ( Spaltennamen , ColList [ ich ] )
) ;
) ;
// Erstellen Sie die neue Datentabelle mit den besten 10 Punkten für alle Spalten
dttogether = Neuer Tisch ( "Die Ergebnisse" ,
Neue Spalte ( "Spaltenname" , Charakter , Werte ( Spaltennamen ) ) ,
Neue Spalte ( „Y“ , Werte ( Beste Ys ) ) ,
Neue Spalte ( "Daten" , Werte ( Beste Daten ) )
) ;
// Erstelle die grafische Ausgabe
dttogether << Farbe nach Spalte ( : Spaltenname ) ;
Bivariat ( Y ( : Y ) , X ( : Daten ) , Gruppiere nach ( : Spaltenname ) , Linie anpassen ( 1 ) ) ;