Guida all'utilizzo di JSL per estrarre i parametri di adattamento dalla piattaforma Fit Curve.Sono relativamente nuovo alla programmazione JSL e sto avendo difficoltà ad automatizzare un flusso di lavoro che coinvolge la piattaforma Fit Curve. Ecco cosa sto cercando di automatizzare:
Passaggio 1: Adattare la curva al modello esponenziale 2P fornendo i dati X, Y e BY. Il codice dello script seguente funziona correttamente.
Passaggio 2: Raccogli i parametri di adattamento: Scala e Tasso di crescita ( magari fossero solo "a" e "b" ) per ogni ID campione e crea una nuova tabella con le colonne: "ID campione", "Scala" o "a", "Tasso di crescita" o "b", "Numero di punti dati" (utilizzato nell'adattamento)
- È qui che incontro difficoltà: riesco a creare una nuova tabella con le intestazioni appropriate (vedi script qui sotto), ma non riesco a capire come comunicare con il report Fit Curve per estrarre i valori di adattamento per ogni ID campione e poi usarli per popolare una riga per ogni SampleID. Ho provato a usare l'assistente JMP e Claude per scrivere il codice, ma entrambi hanno avuto difficoltà a estrarre queste informazioni dal report.
Passaggio 3: In questa nuova tabella aggiungere altre due colonne: "Previsione a TOS = 60" e "Incertezza della previsione" e utilizzare la formula esponenziale 2P (y = a*exp(b*x)) per la previsione e utilizzare l'errore di adattamento nei parametri per stimare l'incertezza del valore a TOS = 60.
Grazie per l'aiuto,
Dave
New Column( "Conversion at 60 hr", Numeric, Continuous ),
New Column( "Error of Estimate", Numeric, Continuous )
);Fit Curve(
Y( :Conversion ),
X( :TOS ),
Fit Exponential 2P,
By( :Sample ID )
);<BR />results_dt = New Table( "Exponential Fit Results",<BR />Add Rows( 0 ),<BR />New Column( "Sample ID" ),<BR />New Column( "a", Numeric, Continuous ),<BR />New Column( "b", Numeric, Continuous ),<BR /><CODE class="language-jsl">New Column( "Number of Points", Numeric, Continuous ),
Automazione e scriptingOggetto: Richiesta di aiuto per utilizzare JSL per estrarre i parametri di adattamento dalla piattaforma Fit CurveFai clic con il pulsante destro del mouse su una delle tabelle dei risultati e seleziona "Crea tabella dati combinata".

Dalla tabella risultante, è possibile utilizzare lo script "Crea tabella dati combinata". Questo fornisce un'ottima idea di cosa si può fare.
Names Default To Here(1);
rpt = New Window("Bioassay - Fit Curve of Toxicity by log Conc",
Data Table("Bioassay") << Fit Curve(
Y(:Toxicity),
X(:log Conc),
Fit Exponential 2P,
By(:Formulation)
)
);
Wait(0);
rpt["Fit Curve", "Formulation=standard", "Exponential 2P", "Parameter Estimates",
Table Box(1)] << Make Combined Data Table;
rpt << Close Window;

Dalla tabella è possibile quindi utilizzare diverse piattaforme di tabella (come riepilogo, suddivisione e aggiornamento) per creare la tabella finale.


Oggetto: Richiesta di aiuto per utilizzare JSL per estrarre i parametri di adattamento dalla piattaforma Fit CurveGrazie per la risposta. Stavo valutando questa soluzione, ma supponevo ci fosse un modo per estrarre direttamente le variabili da ciascuna tabella anziché dover scaricare l'intera tabella e poi riformattarla in base alle mie esigenze. Ho apprezzato molto anche la chiara descrizione.
Oggetto: Richiesta di aiuto per utilizzare JSL per estrarre i parametri di adattamento dalla piattaforma Fit CurveÈ possibile farlo, ma di solito è più semplice convertirlo prima in una tabella e procedere da lì.
Oggetto: Richiesta di aiuto per utilizzare JSL per estrarre i parametri di adattamento dalla piattaforma Fit CurveEcco un altro approccio che utilizza XPath per cercare nella struttura del report. Non dirò che sia più semplice, ma ho scoperto che è più robusto e genera un errore più evidente se si verifica qualcosa di inaspettato, ad esempio se la terza tabella non è più la terza tabella, invece di restituire semplicemente il valore errato, soprattutto se si aggiungono dei controlli e si generano errori in caso di valori inattesi. Credo che questo dovrebbe essere più semplice, quindi promuovo senza vergogna una mia richiesta: creare almeno dei wrapper per questo metodo: semplificare l'ottenimento dei risultati dai report tramite JSL.
Names Default To Here( 1 );
// Example fit
dt = Open( "$SAMPLE_DATA/Nonlinear Examples/Bioassay.jmp" );
curves = dt << Fit Curve(
Y( :Toxicity ),
X( :log Conc ),
Fit Exponential 2P,
By( :Formulation )
);
// Run this to inspect the report's XML structure — it's the key to
// writing the XPath expressions below. Combine with web searches on
// XPath syntax (//, ancestor::, parent::, text(), etc.) as needed.
curves << Get XML;
// Find the right fit by matching the outline box heading — return the first match
curve = filter each( {c}, curves, length( c << XPath( "/OutlineBox[text()='Formulation=standard']" ) ) > 0 )[1];
// Find columns labeled 'Parameter' inside an outline box called 'Parameter Estimates'
// inside a box called 'Exponential 2P', then find the grandparent TableBox and return
// the first one (there should only be one — you can verify with
// if( N Items( ... ) > 1, throw( ... ) )
// Single XPath split across lines for readability; the || concatenates the fragments.
paramTableRef = (curve << XPath(
"//OutlineBox[text()='Exponential 2P']"
|| "//OutlineBox[text()='Parameter Estimates']"
|| "//StringColBoxHeader[text()='Parameter']"
|| "//ancestor::TableBox"
))[1];
// Alternative approach: you could grab the whole table as a list and parse it directly:
paramTableList = paramTableRef << Get;
Show( paramTableList );
// Sticking with XPath for now: find that StringColBoxHeader again, find its parent, and get
// the parameter names (again, assumes there is only one matching column).
paramNames = (paramTableRef << XPath( "//StringColBoxHeader[text()='Parameter']//parent::StringColBox" ))[1] << Get;
// Now get the estimates
paramEstimates = (paramTableRef << XPath( "//NumberColBoxHeader[text()='Estimate']//parent::NumberColBox" ))[1] << Get;
// Put them in an associative array
arrParamEstimates = Associative Array( paramNames, paramEstimates );
// And now you have the values keyed by parameter name
Show( arrParamEstimates["Growth Rate"], arrParamEstimates["Scale"] );