Modo efficiente tramite JSL per nascondere e/o escludere un gran numero di colonnePer esempi di genomica @Chris_Kirchberg si è sviluppato (cfr https://community.jmp.com/t5/Technical-Reference-Library/C40-mRNA-Expression-Cattle-Follicle-Development/ta-p/519216 ), parte del flusso di lavoro consiste nell'identificare le colonne che dovrebbero essere escluse dall'analisi a causa di problemi di qualità dei dati.Lui e io stiamo lavorando a una sceneggiatura per farlo in modo efficiente.L'esempio ha 28000 colonne e circa 9000 di queste colonne devono essere nascoste ed escluse.Lo stiamo facendo con un loop in JSL in questo momento, ma è piuttosto lento (richiede diversi secondi)
// collist is a list of column references
For( i = 1, i <= N Items( collist ), i++,
collist[i] << Hide( 1 ) << Exclude( 1 )
);
Sembra che ci dovrebbe essere un modo più veloce per farlo.Qualche suggerimento per renderlo più veloce?
Ri: Modo efficiente tramite JSL per nascondere e/o escludere un gran numero di colonneFollow-up: ho condiviso questo problema con lo sviluppo e sono stati apportati diversi miglioramenti per accelerare questo tipo di operazione.Il ciclo delle colonne da nascondere/escludere vedrà ancora un rallentamento all'aumentare del numero di colonne, ma saranno disponibili alcuni nuovi messaggi JSL per nascondere ed escludere colonne e il registratore di azioni utilizzerà quelli dove è appropriato. Questo dovrebbe essere disponibile nelle build di sviluppo JMP18 e nella versione 18 Early Adopter.
Dal numero Jira (JMP-13445)
Risolto con l'aggiunta di nuovi comandi Nascondi colonne ed Escludi colonne nella tabella dati. Possono essere chiamati così:
<SPAN class="">dt << Nascondi colonne; // nasconde le colonne selezionate </SPAN>
dt << Nascondi colonne(1|0); // nasconde o mostra le colonne
dt << Nascondi colonne( COLUMN_LIST ); // nasconde le colonne elencate
dt << Nascondi colonne( 1|0, COLUMN_LIST ); // nasconde o mostra le colonne elencate
Escludi colonne utilizza la stessa sintassi.
Ri: Modo efficiente tramite JSL per nascondere e/o escludere un gran numero di colonneAggiornamento rapido: sembra funzionare su Mac se l'ho incluso in uno script più grande, ma non funziona su Windows.C'è qualcosa di speciale che devo fare per la versione Windows di JMP per far funzionare la chiamata del menu principale () all'interno di uno script più grande?
Ri: Modo efficiente tramite JSL per nascondere e/o escludere un gran numero di colonneMain Menu( "Cols:Hide/Unhide" );
Ho provato di nuovo, ma l'ho copiato e incollato nel mio script e ora funziona. Sole di un Gunderson! Perché non dovrebbe funzionare e ora funziona? L'unica cosa a cui riesco a pensare è che funziona se eseguo solo quella riga con le colonne selezionate, ma quando inserisco uno script che seleziona le colonne, la riga successiva è questa, non funziona.
Ri: Modo efficiente tramite JSL per nascondere e/o escludere un gran numero di colonne@brady_brady , per qualche motivo il menu principale ("Cols:Hide/Unhide") non funziona su Windows 10 JMP 17 EA9. Qualsiasi motivo per cui questo potrebbe essere? Almeno non funziona per me.
Ri: Modo efficiente tramite JSL per nascondere e/o escludere un gran numero di colonneI comandi del menu principale sono molto veloci e non li vedo come hack, ma sarebbe bello se JSL potesse eseguire lo stesso codice dei comandi del menu principale, tramite messaggio. In alternativa, potrebbe esserci un'espansione della sintassi del messaggio principale nella guida allo scripting e la standardizzazione tra piattaforme nel caso in cui i menu principali non abbiano lo stesso aspetto tra Mac e PC.
Ri: Modo efficiente tramite JSL per nascondere e/o escludere un gran numero di colonneFa parte di un flusso di lavoro per elaborare i dati di espressione genomica.Spesso ci sono molte colonne nella tabella dei dati di analisi (dove la colonna corrisponde a una particolare variabile di espressione genomica) dove c'è poca o nessuna espressione, quindi vorresti identificare quelle colonne e quindi non usarle in ulteriori analisi.Nascondere ed escludere è un modo conveniente per non visualizzare tali colonne nelle successive finestre di dialogo della piattaforma di analisi.Anche se potremmo anche semplicemente eliminare le colonne o creare sottoinsiemi delle colonne che vogliamo utilizzare, è utile mantenere le colonne escluse/nascoste nella tabella dei dati.
Ri: Modo efficiente tramite JSL per nascondere e/o escludere un gran numero di colonneHo anche provato a usare for each() ed era ancora molto lento
for each({c, ii}, collist,
c << Hide(1) << Exclude(1)
)
e questo è stato altrettanto lento.
L'uso del comando del menu principale funziona molto velocemente (grazie @yuichi_katsumur !), ma sembra un trucco.Apprezzo i suggerimenti e l'aiuto su questo.
Ri: Modo efficiente tramite JSL per nascondere e/o escludere un gran numero di colonneCiao Sam,
Che ne dici di seguire il copione? È molto più veloce.
dt << clear column selection();
dt << Select Columns( collist );
Wait( 0 );
Main Menu( "Cols:Hide/Unhide" );
Main Menu( "Cols:Exclude/Unexclude" );
dt << clear column selection();
Ri: Modo efficiente tramite JSL per nascondere e/o escludere un gran numero di colonneHo provato alcuni trucchi, nessuno di loro ha funzionato.
- Racchiudere l'opera
dt << Begin Data Update;
//work here...
dt << End Data Update;
-Rendere invisibile la tabella dei dati
-Rendere privata la tabella dei dati
Qual è lo scopo di nascondere ed escludere le colonne in questa applicazione? Forse c'è una soluzione alternativa.
Ri: Modo efficiente tramite JSL per nascondere e/o escludere un gran numero di colonne
Ho anche provato
collist << Hide(1);
collist << Exclude(1);
e anche questo è molto lento.