提供された値に基づいて投与量範囲を計算して追加するバイオアッセイで生成された生のサンプルデータをインポートして分析するためのスクリプトを作成しています。
このためには、参照データとサンプルデータを識別し、対応する線量範囲を設定する必要があります。
私のスクリプトには、「サンプル情報」ポップアップ ウィンドウが含まれており、オペレーターはここでサンプルの場所 (行 x + x) を識別し、これらのサンプルの希望する線量範囲を入力できます。そして、ここで私の苦労が始まります。

サンプル名はデータ テーブルに正しく追加されていますが、そこに入力された値に基づいて投与量ポイントを取得するにはどうすればよいでしょうか?
スクリプトは、開始濃度と希釈係数に基づいて各投与量ポイントを計算できる必要があります。
次のように表示したいです (この例では手動で入力した「用量」列を参照)。

何か提案はありますか?
私は JMP 18 で作業していますが、これまでのところサンプル情報ポップアップのスクリプトは次のとおりです。
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( ????
// )
),
)
)
)
)
);上記のスクリプトが動作するサンプル データ テーブルを追加しました。
自動化とスクリプトデータの探索と視覚化Re: 提供された値に基づいて投与量範囲を計算して追加するこんな感じかな
Eval(EvalExpr(
dt << New Column("R", Numeric, Continuous, Formula(
Expr(start_conc)/ Expr(factor) ^ (Col Number(:Sample, :Sample) - Col Cumulative Sum(1, :Sample))
));
));
Re: 提供された値に基づいて投与量範囲を計算して追加するほとんど!
スクリプトを少し変更して、1 つの反復に対して適切な投与量範囲を計算することができました。(添付ファイルを参照)。他の反復には同じ値 (つまり 20.000 - 0.0004) があるはずですが、代わりに反復 2 の最後の結果を分割し続けます。
したがって、行 A (複製 1) と E (複製 2) にあるサンプル「RS」の場合、行 E の値の範囲は目的の 20.000 ~ 0.0004 ですが、行 A の範囲は 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: 提供された値に基づいて投与量範囲を計算して追加する列番号と列累積合計に追加のグループ化を追加する必要があります(たとえば行が機能する可能性があります)
20000 / 5 ^ (Col Number(:Sample, :Sample, :Row) - Col Cumulative Sum(1, :Sample, :Row))

Re: 提供された値に基づいて投与量範囲を計算して追加するはい、完璧に動作します!ありがとうございます!