Calculer et ajouter une plage de doses en fonction des valeurs fourniesJe crée un script pour importer et analyser des données d'échantillons bruts générées dans un bio-essai.
Pour cela, il est nécessaire d’identifier les données de référence et les données d’échantillon et de définir la plage de dose correspondante.
Dans mon script, j'ai inclus une fenêtre contextuelle « Informations sur l'échantillon » dans laquelle les opérateurs peuvent identifier les emplacements des échantillons (ligne x + x) et saisir la plage de dose souhaitée pour ces échantillons. Et c'est là que mon problème se pose !

Les noms des échantillons sont correctement ajoutés au tableau de données, mais comment puis-je obtenir les points de dose en fonction des valeurs saisies ?
Le script doit pouvoir calculer chaque point de dose en fonction d’une concentration de départ et d’un facteur de dilution.
À quoi je veux que cela ressemble (voir la colonne « Dose », saisie manuellement pour cet exemple) :

Des suggestions ?
Je travaille dans JMP 18, mon script pour l'exemple d'informations contextuelles jusqu'à présent :
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( ????
// )
),
)
)
)
)
);J'ai ajouté un exemple de table de données dans lequel le script ci-dessus devrait fonctionner.
Automatisation et scriptsExploration et visualisation des donnéesRé: Calculer et ajouter une plage de doses en fonction des valeurs fourniesPeut-être quelque chose comme ça
Eval(EvalExpr(
dt << New Column("R", Numeric, Continuous, Formula(
Expr(start_conc)/ Expr(factor) ^ (Col Number(:Sample, :Sample) - Col Cumulative Sum(1, :Sample))
));
));
Re: Calculer et ajouter une plage de doses en fonction des valeurs fourniesPresque!
J'ai adapté un peu votre script et j'ai pu calculer la bonne plage de dose pour l'une des répliques ! (voir pièce jointe). L'autre réplique devrait avoir les mêmes valeurs (c'est-à-dire 20,000 - 0,0004) mais continue à diviser le dernier résultat de la réplique 2.
Ainsi, pour l'échantillon « RS », situé dans la ligne A (réplication 1) et E (réplication 2), les valeurs de la ligne E varient de la plage souhaitée de 20,000 à 0,0004, mais pour la ligne A, la plage est de 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: Calculer et ajouter une plage de doses en fonction des valeurs fourniesVous devez ajouter un regroupement supplémentaire au numéro de colonne et à la somme cumulée de la colonne (la ligne peut fonctionner par exemple)
20000 / 5 ^ (Col Number(:Sample, :Sample, :Row) - Col Cumulative Sum(1, :Sample, :Row))

Re: Calculer et ajouter une plage de doses en fonction des valeurs fourniesOui, cela fonctionne parfaitement ! Merci !