Manera eficiente a través de JSL para ocultar y/o excluir una gran cantidad de columnasPara ejemplos de genómica @Chris_Kirchberg se ha desarrollado (ver https://community.jmp.com/t5/Technical-Reference-Library/C40-mRNA-Expression-Cattle-Follicle-Development/ta-p/519216 ), parte del flujo de trabajo consiste en identificar las columnas que deben excluirse del análisis debido a problemas de calidad de los datos.Él y yo estamos trabajando en un guión para hacer esto de manera eficiente.El ejemplo tiene 28000 columnas y alrededor de 9000 de esas columnas deben ocultarse y excluirse.Estamos haciendo esto con un bucle en JSL en este momento, pero es bastante lento (toma varios segundos)
// collist is a list of column references
For( i = 1, i <= N Items( collist ), i++,
collist[i] << Hide( 1 ) << Exclude( 1 )
);
Parece que debería haber una forma más rápida de hacer esto.¿Alguna sugerencia para hacer esto más rápido?
Re: Manera eficiente a través de JSL para ocultar y/o excluir una gran cantidad de columnasSeguimiento: Compartí este problema con el desarrollo y se han realizado varias mejoras para acelerar este tipo de operación.Recorrer las columnas para ocultar/excluir aún verá una ralentización a medida que aumenta el número de columnas, pero estarán disponibles algunos mensajes JSL nuevos para ocultar y excluir columnas, y la grabadora de acciones los utilizará cuando sea apropiado. Esto debería estar disponible en las compilaciones de desarrollo JMP18 y la versión 18 Early Adopter.
Del problema de Jira (JMP-13445)
Se solucionó agregando nuevos comandos Ocultar columnas y Excluir columnas en la tabla de datos. Se pueden llamar así:
<SPAN class="">dt << Ocultar columnas; // oculta las columnas seleccionadas </SPAN>
dt << Ocultar Columnas(1|0); // oculta o muestra columnas
dt << Ocultar columnas (LISTA_COLUMNAS); // oculta las columnas de la lista
dt << Ocultar columnas (1|0, COLUMN_LIST); // oculta o muestra las columnas enumeradas
Excluir columnas utiliza la misma sintaxis.
Re: Manera eficiente a través de JSL para ocultar y/o excluir una gran cantidad de columnasActualización rápida: esto parece funcionar en Mac si lo incluí en un script más grande, pero no funciona en Windows.¿Hay algo especial que deba hacer para que la versión de Windows de JMP haga que la llamada del Menú principal () funcione dentro de un script más grande?
Re: Manera eficiente a través de JSL para ocultar y/o excluir una gran cantidad de columnasMain Menu( "Cols:Hide/Unhide" );
Intenté esto nuevamente, pero lo copié y lo pegué en mi script y ahora funciona. ¡Sol de Gunderson! ¿Por qué no iba a funcionar y ahora sí? Lo único que se me ocurre es que funciona si ejecuto solo esa línea con las columnas seleccionadas, pero cuando se coloca en un script que selecciona columnas, la siguiente línea es esta, no funciona.
Re: Manera eficiente a través de JSL para ocultar y/o excluir una gran cantidad de columnas@brady_brady , por alguna razón el menú principal ("Cols:Hide/Mostrar") no funciona en Windows 10 JMP 17 EA9. ¿Alguna razón por la que esto podría ser? Por lo menos a mi no me funciona.
Re: Manera eficiente a través de JSL para ocultar y/o excluir una gran cantidad de columnasLos comandos del menú principal son realmente rápidos y no los veo como trucos, pero sería bueno si JSL pudiera ejecutar el mismo código que los comandos del menú principal, a través de un mensaje. Alternativamente, podría haber una expansión de la sintaxis del mensaje principal en la guía de secuencias de comandos y la estandarización entre plataformas en el caso de que los menús principales no se vean igual entre Mac y PC.
Re: Manera eficiente a través de JSL para ocultar y/o excluir una gran cantidad de columnasEs parte de un flujo de trabajo para procesar datos de expresión genómica.A menudo, hay muchas columnas en la tabla de datos de análisis (donde la columna corresponde a una variable de expresión genómica particular) donde hay poca o ninguna expresión, por lo que le gustaría identificar esas columnas y luego no usarlas en análisis posteriores.Ocultar y excluir es una forma conveniente de no mostrar esas columnas en los cuadros de diálogo posteriores de la plataforma de análisis.Si bien también podríamos simplemente eliminar las columnas o crear un subconjunto de las columnas que queremos usar, hay algo de valor en mantener las columnas excluidas/ocultas en la tabla de datos.
Re: Manera eficiente a través de JSL para ocultar y/o excluir una gran cantidad de columnasTambién intenté usar for each() y todavía era muy lento
for each({c, ii}, collist,
c << Hide(1) << Exclude(1)
)
y eso fue igualmente lento.
Usar el comando del menú principal funciona súper rápido (gracias @yuichi_katsumur !), pero se siente como un truco.Agradezco las sugerencias y ayuda en esto.
Re: Manera eficiente a través de JSL para ocultar y/o excluir una gran cantidad de columnasHola Sam,
¿Qué hay de seguir el guión? Es mucho más rápido.
dt << clear column selection();
dt << Select Columns( collist );
Wait( 0 );
Main Menu( "Cols:Hide/Unhide" );
Main Menu( "Cols:Exclude/Unexclude" );
dt << clear column selection();
Re: Manera eficiente a través de JSL para ocultar y/o excluir una gran cantidad de columnasProbé algunos trucos, ninguno funcionó.
-Encerrar la obra en
dt << Begin Data Update;
//work here...
dt << End Data Update;
-Hacer invisible la tabla de datos
-Hacer privada la tabla de datos
¿Cuál es el propósito de ocultar y excluir las columnas en esta aplicación? Tal vez haya una solución.
Re: Manera eficiente a través de JSL para ocultar y/o excluir una gran cantidad de columnas
yo también probé
collist << Hide(1);
collist << Exclude(1);
y eso también es muy lento.