Calcola e aggiungi l'intervallo di dose in base ai valori fornitiSto sviluppando uno script per importare e analizzare dati di campioni grezzi generati in un biotest.
Per questo è necessario identificare i dati di riferimento e i dati campione e impostare l'intervallo di dose corrispondente.
Nel mio script ho incluso una finestra pop-up "sample info" in cui gli operatori possono identificare le posizioni dei campioni (riga x + x) e immettere l'intervallo di dose desiderato per questi campioni. Ed è qui che entra in gioco la mia lotta!

I nomi dei campioni sono stati aggiunti correttamente alla tabella dati, ma come faccio a ottenere i punti dose in base ai valori immessi?
Lo script dovrebbe essere in grado di calcolare ogni punto di dose in base a una concentrazione iniziale e a un fattore di diluizione.
Ecco come vorrei che apparisse (vedere la colonna "Dose", inserita manualmente per questo esempio):

Avete suggerimenti?
Sto lavorando con JMP 18, finora il mio script per le informazioni di esempio è il seguente:
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( ????
// )
),
)
)
)
)
);Ho aggiunto un esempio di tabella dati in cui dovrebbe funzionare lo script sopra.
Automazione e scriptingEsplorazione e visualizzazione dei datiRe: Calcola e aggiungi l'intervallo di dose in base ai valori fornitiForse qualcosa del genere
Eval(EvalExpr(
dt << New Column("R", Numeric, Continuous, Formula(
Expr(start_conc)/ Expr(factor) ^ (Col Number(:Sample, :Sample) - Col Cumulative Sum(1, :Sample))
));
));
Re: Calcola e aggiungi l'intervallo di dose in base ai valori fornitiQuasi!
Ho adattato un po' il tuo script e sono riuscito a calcolare il giusto intervallo di dose per 1 delle repliche! (vedi allegato). L'altra replica dovrebbe avere gli stessi valori (ad esempio 20.000 - 0.0004) ma invece continua a dividere l'ultimo risultato della replica 2.
Quindi, per il campione 'RS', situato nella riga A (replica 1) ed E (replica 2), i valori della riga E vanno dall'intervallo desiderato 20,000 a 0,0004, ma per la riga A l'intervallo è 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 ))
)
);
)
);
)
)
)
)
);
Re: Calcola e aggiungi l'intervallo di dose in base ai valori fornitiÈ necessario aggiungere un raggruppamento aggiuntivo al numero di colonna e alla somma cumulativa di colonna (ad esempio, potrebbe funzionare la riga)
20000 / 5 ^ (Col Number(:Sample, :Sample, :Row) - Col Cumulative Sum(1, :Sample, :Row))

Re: Calcola e aggiungi l'intervallo di dose in base ai valori fornitiSì, funziona perfettamente! Grazie!