Lo script funziona fino a quando non viene richiamato da un componente aggiuntivo!<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ciao,
Ho uno script che acquisisce i dati da un'interfaccia utente, esegue un adattamento in JMP e sputa un rapporto con i dati grezzi, alcuni dati calcolati e vari grafici e informazioni selezionate dall'output di JMP.
Funziona bene quando viene eseguito dallo script, anche una volta crittografato.
Tuttavia, una volta incollato il file crittografato in un semplice componente aggiuntivo con solo questo script, tutto funziona tranne che non visualizza più l'equazione di adattamento che estraggo dall'output di JMP.
Sono sconcertato!
Per rendere le cose ancora più sconcertanti, JMP funziona perfettamente dal componente aggiuntivo a condizione che io abbia eseguito lo script una volta dalla finestra dello script prima di utilizzare il componente aggiuntivo. Quasi come se ora si ricordasse cosa fare!
Lo script ottiene l'equazione qui:
nlr = nlModello << Rapporto;
pb = nlr[PictBox(1)];
modEq = pb << Ottieni immagine;
Quindi lo visualizza utilizzando:
Casella di riepilogo V(
Casella di testo("Equazione modello", << Imposta dimensione carattere (12)),
Picture Box (modEq),
Casella di testo(" "),
Qualche idea sul perché solo questo bit smetta di funzionare una volta integrato nel componente aggiuntivo?
Allego un dump dello schermo dell'output eseguito dalla finestra dello script rispetto a quello eseguito dal componente aggiuntivo (subito dopo l'apertura di JMP)
Grazie
Ri: Lo script funziona fino a quando non viene richiamato da un componente aggiuntivo!Sospetto che il PictBox che contiene la formula debba apparire sullo schermo per creare effettivamente la bitmap che stai cercando di catturare.Meglio catturarlo mentre è visibile.
Potresti essere in grado di utilizzare "nascosto" anziché "privato" con la tabella dei dati.Una tabella nascosta ha una finestra nascosta.Un tavolo privato non ha finestre.Le tabelle private devono essere chiuse mentre si dispone ancora di una variabile che punta a esse (oppure si accumulano fino alla chiusura di JMP, consumando memoria).I tavoli nascosti non sono così facili da perdere di vista.
Ri: Lo script funziona fino a quando non viene richiamato da un componente aggiuntivo!Ho dovuto utilizzare una soluzione antiestetica per poter eseguire i miei test di convalida: appena prima di richiamare l'analisi JMP non lineare, apro una finestra vuota e la chiudo alla fine dello script.
Funziona. Mi aspetto che anche show then hide log funzioni.
Non vedo l'ora di capire perché lo stia facendo!
Ri: Lo script funziona fino a quando non viene richiamato da un componente aggiuntivo!Ciao Craig,
Allora... Ho provato a utilizzare la funzione newimage (buona non lo sapevo) e ancora senza fortuna.
Ho provato ad aggiungerlo durante l'estrazione dalla piattaforma del report:
nlr = nlModello << Rapporto;
pb = nlr[PictBox(1)];
//modEq = pb << Ottieni immagine;
//Here:modEq = pb << Ottieni immagine;
modEq = pb << Ottieni immagine;
modEq = NewImage(modEq);
L'ho provato anche nella mia finestra del rapporto:
Casella di riepilogo V(
Casella di testo("Equazione modello", << Imposta dimensione carattere (12)),
picturebox(nuovaimmagine( modEq )),
E ho provato in entrambi i posti per buona misura!
C'è una differenza: il report JMP in background mostra ancora una croce, ma il mio report non mostra nulla, nemmeno uno spazio vuoto.
Tuttavia, ripercorrendo la sceneggiatura e correndo sempre meno, mi sono reso conto che il punto in cui effettivamente fallisce è qui:
// Analisi dei dati
win3 = Nuova finestra( "Report modello non lineare",
nlModel = dt << Non lineare(
Y( :Nome( "hGH" ) ),
X( :Nome( "Crescita modello" ) ),
Secondo metodo di derivazione( 1 ),
Newton,
Fine,
Limiti di fiducia,
Mostra espressione di previsione( 1 )
)
);
win3 viene chiuso dallo script e sostituito dalla mia finestra di report con tutto ciò che gli scienziati mi hanno chiesto. Quindi, per qualche ragione, se non c'è nessuna finestra aperta in JMP tranne la finestra iniziale, l'istruzione mostra l'equazione di previsione fallisce! Tutti i trucchi suggeriti in questo thread riguardano operazioni eseguite dopo l'esecuzione dell'NLR e quindi non influiscono sul risultato.
E il motivo per cui non ho mai identificato questo bug quando ho scritto l'addin qualche mese fa è perché avevo la punta della finestra del giorno attiva. Deve essere stato sufficiente per far funzionare l'add-in: qualsiasi finestra di JMP aperta sembra fare il trucco.
Per lo sfondo: hGH è la risposta e i valori vengono inseriti dall'utente più in alto, la crescita del modello è la colonna che utilizza l'elusiva equazione del modello come formula che richiede tempo e modella la "crescita prevista" che si adatterà alla crescita effettiva.
Quindi il problema è che la funzione non lineare non visualizzerà l'equazione pred dove viene richiamata nel mio script quando non vengono aperte altre finestre jmp.
Creo una tabella in precedenza:
dt = Nuova tabella( "Dati",
privato,
Aggiungi righe( 6 ),
Nuova colonna( "Tempo", Numerico, Imposta valori( lstTimes ) ),
Nuova colonna( "hGH", Numerico, Imposta valori( lsthGH ) )
);
Ho tolto l'istruzione privata e ovviamente ora l'addin funziona.
Ma il motivo per cui ho usato private è perché era l'unico modo in cui il mio output avrebbe funzionato. Se alla fine provo a chiudere la tabella dati, anche con wait, il report non viene prodotto.
Ad ogni modo, non è una soluzione adeguata, ma se ci fosse un modo per aprire la tabella dei dati quando viene prodotto il rapporto, quindi non ci sono problemi tecnici e quindi chiudere la tabella dei dati senza che lo script fallisca, mi accontenterei di quello.
Mi chiedo se funzionerà in JMP 13, se si tratta di un bug o se effettivamente c'è un errore da qualche parte nel modo in cui ho scritto...
Ri: Lo script funziona fino a quando non viene richiamato da un componente aggiuntivo!Prova questo:
scatola delle immagini( nuova immagine ( modEq ))
Penso che la X rossa significhi che il pict box è collegato ai dati originali per l'immagine e quei dati non esistono più .Clonando l'immagine (con newImage) penso che il pict box avrà una sua copia privata.
Potresti anche essere in grado di tralasciare la funzione picturebox:
Casella di riepilogo V(
Casella di testo("Equazione modello", << Imposta dimensione carattere (12)),
modEq, // penso che l'immagine funzionerà senza la funzione PictureBox, ma potrebbe comunque aver bisogno di newImage
Casella di testo(" "),
Ri: Lo script funziona fino a quando non viene richiamato da un componente aggiuntivo!Ciao,
Ho provato alcuni scenari diversi ora.
Appunti
- l'addin e lo script usano entrambi i nomi predefiniti per la clausola here (soprattutto nel caso in cui le persone utilizzino JMP per qualcos'altro allo stesso tempo)
- l'equazione che voglio importare dal report JMP nel mio è personalizzata da una colonna nella tabella che utilizza una formula da compilare e ho attivato Mostra espressione di previsione ( 1 )
- nella struttura ad albero, questo appare come un pictbox come ha detto craige perché le equazioni in JMP sono immagini piuttosto che testo. E così nella mia nuova sceneggiatura ho usato il suggerimento di Eric ed è ora
nlr = nlModello << Rapporto ;
pb = nlr [ PictBox ( 1 )] ;
modEq = pb << Ottieni immagine ;
- lo script ottiene anche una tabella:
tb = nlr [ TableBox ( 5 )] ;
tblValues = tb << Trasforma in tabella dati ;
- ottiene anche un grafico composto da diversi bit raccolti in una finestra immagine:
bb = nlr [ PictureBox ( 1 )] ;
complotto = bb << Ottieni un'immagine ;
Visualizza quelli senza problemi nel mio rapporto.
Scenari:
- funziona da script ogni volta
- funziona da addin quando lo script viene aperto anche se non è stato eseguito
- funziona se l'addin viene richiamato una seconda volta e il report non è stato chiuso (il report senza l'equazione visualizzata)
- non funziona quando viene chiamato dall'addin per la prima volta o in qualsiasi momento se la finestra del report è stata chiusa
- funziona se il registro è aperto
- funziona una volta che il registro è stato aperto anche se entrambe le finestre del registro e del rapporto sono state chiuse in precedenza
- funziona fintanto che è aperta una finestra JMP (finestra modifica componente aggiuntivo JMP/qualsiasi tabella dati/finestra script) ma una volta chiuse, non funziona più
Sembra che il mio componente aggiuntivo abbia bisogno di un amico per lavorare
Come puoi vedere dall'immagine, mostra una croce. Dovrei anche dire che quando lo script è in esecuzione, JMP apre la propria finestra di report e le tabelle che ho scriptato per eseguire l'adattamento non lineare. Quelli si aprono e si chiudono sullo sfondo perché non riuscivo a trovare un modo per renderli totalmente invisibili. Quando ciò accade, intravedo anche il rapporto di analisi JMP con una croce invece dell'equazione di previsione.
Se questo fosse per me, non mi dispiacerebbe, ma devo convalidarlo per l'uso in cGMP e non posso dire molto bene alle persone di eseguirlo due volte ogni volta per ottenere il formato corretto!
sono in perdita qui...
Qualche ulteriore pensiero?
Ri: Lo script funziona fino a quando non viene richiamato da un componente aggiuntivo!PictBox e PictureBox sono due caselle distinte.Internamente, JMP utilizza PictureBox come marcatore in un albero di displaybox.Quel marcatore viene utilizzato in diversi modi per aiutare a determinare quando le caselle figlie devono essere raggruppate in un singolo blocco.Le piattaforme generalmente posizionano un PictureBox attorno a un grafico e ai suoi assi.Questo è il punto dell'albero in cui spesso vorresti "scattare una foto".
PictBox è una scatola che contiene un'immagine bitmap.
Sfortunatamente, PictureBox() funzione crea un PictBox.Non esiste una funzione JSL per creare un PictureBox, ma le piattaforme li creano.
A meno che tu non stia aggiungendo immagini a un report, probabilmente non troverai PictBox.Probabilmente troverai PictureBox se c'è un grafico.
Ri: Lo script funziona fino a quando non viene richiamato da un componente aggiuntivo!Ciao Hardner e molte grazie per i tuoi commenti.
Grazie anche per il suggerimento per la risoluzione dei problemi. Quando inizialmente ho scritto questo, qualche mese fa, i numeri in th La struttura ad albero non corrispondeva e alla fine ho dovuto tirare a indovinare. Mi ero dimenticato di questo. Era davvero strano: la struttura ad albero avrebbe indicato la casella numero 18, ma per tirarla fuori e visualizzarla nella finestra del mio rapporto, avrei dovuto chiamare la casella numero 7 per esempio!!!
L'addin eseguirà sempre la stessa analisi, quindi nessun problema da quel lato delle cose.
Ri: Lo script funziona fino a quando non viene richiamato da un componente aggiuntivo!Ciao Eric e grazie per questa risposta.
Quando sono andato via e ci ho pensato, mi sono ricordato anche del problema dell'ambito e ho capito che doveva essere un problema.
Ho provato entrambe le soluzioni e non ha funzionato ... la prima volta.
Ora, tuttavia, se eseguo il componente aggiuntivo due volte di seguito, l'equazione di previsione viene visualizzata nel secondo output del report. Ci riproverò quando non sarò tra due riunioni!
È divertente come questa particolare finestra di immagine mi abbia dato problemi e tuttavia anche altri bit che ho ottenuto dal rapporto jmp sono stati visualizzati correttamente.
Buon apprendimento qui!
Grazie ancora 
Ri: Lo script funziona fino a quando non viene richiamato da un componente aggiuntivo!D'accordo che questo sembra scoping.
Ma, probabilmente non correlato, sono anche sorpreso che funzioni per te: pb = nlr[PictBox(1)];
se non scrivo [PictureBox(1)] ottengo un errore.mi chiedo se si tratti di una versione di JMP.
Stavo anche per suggerirti di aggiungere
nlr<
Ancora una volta probabilmente non è rilevante per questo problema immediato, ma suggerirei che se il tuo componente aggiuntivo estrarrà dati diversi ogni volta (o sarà utilizzato da altri con forse altre preferenze) vuoi assicurarti che la casella sia sempre lì e sia sempre PictureBox (1). Potresti volerlo cercare di più specificamente in base al nome della casella di contorno sotto cui si trova o prova a trovarlo.forse stai già facendo quest'ultimo poiché il tuo script non fallisce ma continua a fare il rapporto.L'errore che vedo con PictBox interrompe l'intero script, non utilizza invece uno spazio vuoto.
Ri: Lo script funziona fino a quando non viene richiamato da un componente aggiuntivo!Ehi, Gwenicat,
Sono presenti messaggi nel registro di JMP?
La maggior parte dei problemi di questo tipo tende a ridursi all'ambito variabile.Molto probabilmente il tuo componente aggiuntivo è in esecuzione con Nomi Predefinito Qui(1) , ma lo script quando lo esegui al di fuori del contesto del componente aggiuntivo è probabilmente in esecuzione senza quello.Quindi, al di fuori del contesto del componente aggiuntivo, le tue variabili sono tutte globali, ma nel contesto del componente aggiuntivo, vengono aggiunte al Qui spazio dei nomi invece.Quindi penso modEq all'interno della casella di riepilogo V non può essere trovato nella versione aggiuntiva.Il fatto che funzioni quando si esegue lo script al di fuori del componente aggiuntivo una volta supporta questa teoria, perché così facendo verrà messo modEq nello spazio dei nomi globale, consentendo allo script del componente aggiuntivo di trovarlo.
Prova a cambiare queste due righe:
modEq = pb << Ottieni immagine;
Picture Box (modEq),
A
::modEq = pb << Ottieni immagine;
Scatola delle immagini ( ::modEq ),
e vedere se non funziona meglio.Questo lo assicura modEq viene inserito nello spazio dei nomi globale.Oppure, se vuoi tenerlo in Qui namespace (probabilmente una pratica migliore), fai invece questo:
Qui: modEq = pb << Ottieni immagine;
Scatola delle immagini ( Qui: modEq ),
Fammi sapere se questo risolve.
Grazie,
Eric