Berechnen und Hinzufügen des Dosierungsbereichs basierend auf den bereitgestellten WertenIch erstelle ein Skript zum Importieren und Analysieren von Rohprobendaten, die in einem Bioassay generiert wurden.
Hierzu ist es notwendig, Referenzdaten und Probendaten zu ermitteln und den entsprechenden Dosisbereich festzulegen.
In mein Skript habe ich ein Popup-Fenster mit „Probeninformationen“ eingefügt, in dem die Bediener die Probenpositionen (Zeile x + x) identifizieren und den gewünschten Dosierungsbereich für diese Proben eingeben können. Und hier beginnt mein Problem!

Die Probennamen werden der Datentabelle korrekt hinzugefügt, aber wie erhalte ich die Dosispunkte basierend auf den dort eingegebenen Werten?
Das Skript sollte in der Lage sein, jeden Dosierungspunkt basierend auf einer Ausgangskonzentration und einem Verdünnungsfaktor zu berechnen.
So soll es aussehen (siehe Spalte „Dosis“, für dieses Beispiel manuell eingegeben):

Irgendwelche Vorschläge?
Ich arbeite in JMP 18, mein Skript für das Beispiel-Info-Popup sieht bisher so aus:
nw = New Window( "Sample info", << Modal,
H List Box(
Panel Box( "Enter Sample names",
V List Box(
Text Box( "Row A+E" ),
AE = Text Edit Box( "", << Set Width( 200 ) ),
Text Box( "Row B+F" ),
BF = val2 = Text Edit Box( "", << Set Width( 200 ) ),
Text Box( "Row C+G" ),
CG = val3 = Text Edit Box( "", << Set Width( 200 ) ),
Text Box( "Row D+H" ),
DH = val4 = Text Edit Box( "", << Set Width( 200 ) );
)
),
Spacer Box( Size( 10, 10 ) ),
V List Box(
Panel Box("Calculate dosepoints",
V List Box(
Text Box( "Start Conc. (ng/mL)" ),
Conc = Number Edit Box( ),
Text Box( "n Dosepoints" ),
nDP = Number Edit Box( 12 ),
Text Box( "Factor" ),
xF = Number Edit Box( 0.2 ),
)
),
Spacer Box( Size( , 8 ) ),
H List Box(
Spacer Box( Size( 77, 1 ) ),
Button Box("Ok",
val1 = AE << Get text ();
val2 = BF << Get text ();
val3 = CG << Get text ();
val4 = DH << Get text ();
val5 = Conc << Get ();
val6 = nDP << Get ();
val7 = xF << Get ();
Current Data Table() << New Column( "Sample", Character, "Nominal",
Formula(
Match( :Row,
"A", val1,
"E", val1,
"B", val2,
"F", val2,
"C", val3,
"G", val3,
"D", val4,
"H", val4
)
)
);
Current Data Table() << New Column( "Dose", Character, "Nominal",
//Formula( ????
// )
),
)
)
)
)
);Ich habe eine Beispieldatentabelle hinzugefügt, in der das obige Skript funktionieren sollte.
Automatisierung und SkriptingDatenexploration und -visualisierungBetreff: Dosierungsbereich basierend auf bereitgestellten Werten berechnen und hinzufügenVielleicht so etwas
Eval(EvalExpr(
dt << New Column("R", Numeric, Continuous, Formula(
Expr(start_conc)/ Expr(factor) ^ (Col Number(:Sample, :Sample) - Col Cumulative Sum(1, :Sample))
));
));
Betreff: Dosierungsbereich basierend auf bereitgestellten Werten berechnen und hinzufügenFast!
Ich habe Ihr Skript ein wenig angepasst und konnte den richtigen Dosierungsbereich für 1 der Replikate berechnen! (siehe Anhang). Das andere Replikat sollte die gleichen Werte haben (also 20.000 - 0,0004), teilt aber stattdessen immer das letzte Ergebnis von Replikat 2.
Für die Probe „RS“ in den Reihen A (Replikat 1) und E (Replikat 2) liegen die Werte in Reihe E im gewünschten Bereich von 20.000 bis 0,0004, für Reihe A liegt der Bereich jedoch bei 0,0008 - 1,67e-12.
nw = New Window( "Sample info", << Modal,
H List Box(
Panel Box( "Enter Sample names",
V List Box(
Text Box( "Row A+E" ),
AE = Text Edit Box( "", << Set Width( 200 ) ),
Text Box( "Row B+F" ),
BF = val2 = Text Edit Box( "", << Set Width( 200 ) ),
Text Box( "Row C+G" ),
CG = val3 = Text Edit Box( "", << Set Width( 200 ) ),
Text Box( "Row D+H" ),
DH = val4 = Text Edit Box( "", << Set Width( 200 ) );
)
),
Spacer Box( Size( 10, 10 ) ),
V List Box(
Panel Box("Calculate dosepoints",
V List Box(
Text Box( "Start Conc. (ng/mL)" ),
Conc = Number Edit Box( ),
Text Box( "n Dosepoints" ),
nDP = Number Edit Box( 12 ),
Text Box( "Factor" ),
xF = Number Edit Box( 0.2 ),
)
),
Spacer Box( Size( , 8 ) ),
H List Box(
Spacer Box( Size( 77, 1 ) ),
Button Box("Ok",
val1 = AE << Get text ();
val2 = BF << Get text ();
val3 = CG << Get text ();
val4 = DH << Get text ();
val5 = Conc << Get ();
val6 = nDP << Get ();
val7 = xF << Get ();
Current Data Table() << New Column( "Sample", Character, "Nominal",
Formula(
Match( :Row,
"A", val1,
"E", val1,
"B", val2,
"F", val2,
"C", val3,
"G", val3,
"D", val4,
"H", val4
)
)
);
Eval(
EvalExpr(
Current Data Table() << New Column( "R", Numeric, Continuous,
Formula(
Expr(val5) / Expr(val7) ^ ( Col Number( :Sample, :Sample ) - Col Cumulative Sum( 1, :Sample ))
)
);
)
);
)
)
)
)
);
Betreff: Dosierungsbereich basierend auf bereitgestellten Werten berechnen und hinzufügenSie müssen zusätzliche Gruppierungen zu den Spalten „Nummer“ und „Kumulierte Summe“ hinzufügen (Zeile könnte beispielsweise funktionieren).
20000 / 5 ^ (Col Number(:Sample, :Sample, :Row) - Col Cumulative Sum(1, :Sample, :Row))

Betreff: Dosierungsbereich basierend auf bereitgestellten Werten berechnen und hinzufügenJa, das funktioniert perfekt! Vielen Dank!