Moyen efficace via JSL pour masquer et/ou exclure un grand nombre de colonnesPour un exemple de génomique @Chris_Kirchberg s'est développé (voir https://community.jmp.com/t5/Technical-Reference-Library/C40-mRNA-Expression-Cattle-Follicle-Development/ta-p/519216 ), une partie du workflow consiste à identifier les colonnes qui doivent être exclues de l'analyse en raison de problèmes de qualité des données.Lui et moi travaillons sur un script pour le faire efficacement.L'exemple a 28 000 colonnes et environ 9 000 de ces colonnes doivent être masquées et exclues.Nous faisons cela avec une boucle en JSL en ce moment, mais c'est plutôt lent (prend plusieurs secondes)
// collist is a list of column references
For( i = 1, i <= N Items( collist ), i++,
collist[i] << Hide( 1 ) << Exclude( 1 )
);
Il semble qu'il devrait y avoir un moyen plus rapide de le faire.Des suggestions pour rendre cela plus rapide?
Re : Moyen efficace via JSL pour masquer et/ou exclure un grand nombre de colonnesSuivi : J'ai partagé ce problème avec le développement, et plusieurs améliorations ont été apportées pour accélérer ce type d'opération.La boucle dans les colonnes pour masquer/exclure verra toujours un ralentissement à mesure que le nombre de colonnes augmente, mais certains nouveaux messages JSL pour masquer et exclure des colonnes seront disponibles, et l'enregistreur d'action utilisera ceux où cela est approprié. Cela devrait être disponible dans les versions de développement JMP18 et la version 18 Early Adopter.
À partir du problème Jira (JMP-13445)
Correction en ajoutant de nouvelles commandes Masquer les colonnes et Exclure les colonnes sur la table de données. Ils peuvent être appelés ainsi :
<SPAN class="">dt << Masquer les colonnes ; // cache les colonnes sélectionnées </SPAN>
dt << Masquer les colonnes (1 | 0); // masque ou affiche les colonnes
dt << Masquer les colonnes ( COLUMN_LIST ); // cache les colonnes listées
dt << Masquer les colonnes ( 1 | 0, COLUMN_LIST ); // masque ou affiche les colonnes listées
Exclure les colonnes utilise la même syntaxe.
Re : Moyen efficace via JSL pour masquer et/ou exclure un grand nombre de colonnesMise à jour rapide : cela semble fonctionner sur Mac si je l'inclus dans un script plus volumineux, mais ne fonctionne pas sur Windows.Dois-je faire quelque chose de spécial pour que la version Windows de JMP fasse fonctionner l'appel du menu principal () dans un script plus volumineux ?
Re : Moyen efficace via JSL pour masquer et/ou exclure un grand nombre de colonnesMain Menu( "Cols:Hide/Unhide" );
J'ai essayé à nouveau mais copiez-le et collez-le dans mon script et maintenant cela fonctionne. Soleil d'un Gunderson ! Pourquoi ça ne marcherait pas et maintenant ça marche ? La seule chose à laquelle je peux penser est que cela fonctionne si je n'exécute que cette ligne avec les colonnes sélectionnées, mais lorsqu'il est placé dans un script qui sélectionne les colonnes, la ligne suivante est celle-ci, cela ne fonctionne pas.
Re : Moyen efficace via JSL pour masquer et/ou exclure un grand nombre de colonnes@brady_brady , pour une raison quelconque, le menu principal ("Cols:Hide/Unhide") ne fonctionne pas sous Windows 10 JMP 17 EA9. Une raison pour laquelle cela pourrait être? Au moins ça ne marche pas pour moi.
Re : Moyen efficace via JSL pour masquer et/ou exclure un grand nombre de colonnesLes commandes du menu principal sont très rapides, et je ne les considère pas comme des hacks, mais ce serait bien si JSL pouvait exécuter le même code que les commandes du menu principal, via message. Alternativement, il pourrait y avoir une extension de la syntaxe du message principal dans le guide de script et une normalisation entre les plates-formes dans le cas où les menus principaux ne se ressemblent pas entre Mac et PC.
Re : Moyen efficace via JSL pour masquer et/ou exclure un grand nombre de colonnesCela fait partie d'un flux de travail pour traiter les données d'expression génomique.Il existe souvent de nombreuses colonnes dans le tableau de données d'analyse (où la colonne correspond à une variable d'expression génomique particulière) où il y a peu ou pas d'expression, vous souhaitez donc identifier ces colonnes et ne pas les utiliser dans une analyse ultérieure.Masquer et exclure est un moyen pratique de ne pas afficher ces colonnes dans les boîtes de dialogue suivantes de la plateforme d'analyse.Bien que nous puissions également simplement supprimer les colonnes ou créer un sous-ensemble des colonnes que nous souhaitons utiliser, il est utile de conserver les colonnes exclues/masquées dans la table de données.
Re : Moyen efficace via JSL pour masquer et/ou exclure un grand nombre de colonnesJ'ai aussi essayé d'utiliser for each() et c'était encore très lent
for each({c, ii}, collist,
c << Hide(1) << Exclude(1)
)
et c'était tout aussi lent.
L'utilisation de la commande du menu principal fonctionne très rapidement (merci @yuichi_katsumur !), mais cela ressemble à un hack.J'apprécie les suggestions et l'aide à ce sujet.
Re : Moyen efficace via JSL pour masquer et/ou exclure un grand nombre de colonnesSalut Sam,
Que diriez-vous de suivre le script ? C'est beaucoup plus rapide.
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 : Moyen efficace via JSL pour masquer et/ou exclure un grand nombre de colonnesJ'ai essayé quelques trucs, aucun d'eux n'a fonctionné.
-Enfermer le travail dans
dt << Begin Data Update;
//work here...
dt << End Data Update;
-Rendre le tableau de données invisible
-Rendre la table de données privée
Quel est le but de masquer et d'exclure les colonnes dans cette application ? Il y a peut-être une solution de contournement.
Re : Moyen efficace via JSL pour masquer et/ou exclure un grand nombre de colonnes
j'ai aussi essayé
collist << Hide(1);
collist << Exclude(1);
et c'est aussi très lent.