Effizienter Weg über JSL zum Ausblenden und/oder Ausschließen einer großen Anzahl von SpaltenFür ein genomisches Beispiel @Chris_Kirchberg entwickelt hat (vgl https://community.jmp.com/t5/Technical-Reference-Library/C40-mRNA-Expression-Cattle-Follicle-Development/ta-p/519216 ) besteht ein Teil des Arbeitsablaufs darin, Spalten zu identifizieren, die aufgrund von Datenqualitätsproblemen von der Analyse ausgeschlossen werden sollten.Er und ich arbeiten an einem Skript, um dies effizient zu tun.Das Beispiel hat 28000 Spalten und etwa 9000 dieser Spalten müssen ausgeblendet und ausgeschlossen werden.Wir machen das gerade mit einer Schleife in JSL, aber es ist ziemlich langsam (dauert mehrere Sekunden)
// collist is a list of column references
For( i = 1, i <= N Items( collist ), i++,
collist[i] << Hide( 1 ) << Exclude( 1 )
);
Es scheint, dass es einen schnelleren Weg geben sollte, dies zu tun.Irgendwelche Vorschläge, um dies schneller zu machen?
Betreff: Effizienter Weg über JSL zum Ausblenden und/oder Ausschließen einer großen Anzahl von SpaltenFollow-up: Ich habe dieses Problem mit der Entwicklung geteilt, und es wurden mehrere Verbesserungen vorgenommen, um diese Art von Vorgang zu beschleunigen.Das Durchlaufen von Spalten zum Ausblenden/Ausschließen wird immer noch langsamer, wenn die Anzahl der Spalten zunimmt, aber einige neue JSL-Nachrichten zum Ausblenden und Ausschließen von Spalten werden verfügbar sein, und der Aktionsrekorder wird diese verwenden, wo es angebracht ist. Dies sollte in JMP18-Entwicklungs-Builds und der 18 Early Adopter-Version verfügbar sein.
Aus der Jira-Ausgabe (JMP-13445)
Behoben durch Hinzufügen der neuen Befehle „Spalten ausblenden“ und „Spalten ausschließen“ in der Datentabelle. Sie können so aufgerufen werden:
<SPAN class="">dt << Spalten ausblenden; // blendet ausgewählte Spalten aus </SPAN>
dt << Spalten ausblenden(1|0); // blendet Spalten ein oder aus
dt << Spalten ausblenden ( COLUMN_LIST ); // blendet aufgelistete Spalten aus
dt << Spalten ausblenden( 1|0, COLUMN_LIST ); // Blendet aufgelistete Spalten ein oder aus
Spalten ausschließen verwendet dieselbe Syntax.
Betreff: Effizienter Weg über JSL zum Ausblenden und/oder Ausschließen einer großen Anzahl von SpaltenSchnelles Update: Dies scheint auf dem Mac zu funktionieren, wenn ich es in ein größeres Skript aufgenommen habe, funktioniert aber nicht unter Windows.Muss ich für die Windows-Version von JMP etwas Besonderes tun, damit der Aufruf von Main Menu () in einem größeren Skript funktioniert?
Betreff: Effizienter Weg über JSL zum Ausblenden und/oder Ausschließen einer großen Anzahl von SpaltenMain Menu( "Cols:Hide/Unhide" );
Ich habe es noch einmal versucht, aber es kopiert und in mein Skript eingefügt, und jetzt funktioniert es. Sonne eines Gunderson! Warum sollte es nicht funktionieren und jetzt funktioniert es? Das einzige, was mir einfällt, ist, dass es funktioniert, wenn ich nur diese Zeile mit ausgewählten Spalten ausführe, aber wenn ich ein Skript einfüge, das Spalten auswählt, dann ist die nächste Zeile dies, es funktioniert nicht.
Betreff: Effizienter Weg über JSL zum Ausblenden und/oder Ausschließen einer großen Anzahl von Spalten@brady_brady , aus irgendeinem Grund funktioniert das Hauptmenü ("Cols:Hide/Unhide") nicht unter Windows 10 JMP 17 EA9. Irgendein Grund, warum das sein könnte? Zumindest funktioniert es bei mir nicht.
Betreff: Effizienter Weg über JSL zum Ausblenden und/oder Ausschließen einer großen Anzahl von SpaltenDie Hauptmenübefehle sind wirklich schnell und ich sehe sie nicht als Hacks an, aber es wäre schön, wenn JSL den gleichen Code wie die Hauptmenübefehle per Nachricht ausführen könnte. Alternativ könnte es eine Erweiterung der Main Message-Syntax im Skriptleitfaden und eine plattformübergreifende Standardisierung für den Fall geben, dass die Hauptmenüs zwischen Mac und PC nicht gleich aussehen.
Betreff: Effizienter Weg über JSL zum Ausblenden und/oder Ausschließen einer großen Anzahl von SpaltenEs ist Teil eines Workflows zur Verarbeitung von genomischen Expressionsdaten.Oft gibt es viele Spalten in der Analysedatentabelle (wobei die Spalte einer bestimmten genomischen Expressionsvariablen entspricht), in denen wenig bis gar keine Expression vorhanden ist, sodass Sie diese Spalten identifizieren und dann nicht für die weitere Analyse verwenden möchten.Das Ausblenden und Ausschließen ist eine bequeme Möglichkeit, diese Spalten in nachfolgenden Dialogfeldern der Analyseplattform nicht anzuzeigen.Während wir die Spalten auch einfach löschen oder die Spalten, die wir verwenden möchten, unterteilen könnten, ist es sinnvoll, die ausgeschlossenen/ausgeblendeten Spalten in der Datentabelle beizubehalten.
Betreff: Effizienter Weg über JSL zum Ausblenden und/oder Ausschließen einer großen Anzahl von SpaltenIch habe auch versucht, for each () zu verwenden, und es war immer noch sehr langsam
for each({c, ii}, collist,
c << Hide(1) << Exclude(1)
)
und das war genauso langsam.
Die Verwendung des Hauptmenübefehls funktioniert superschnell (danke @yuichi_katsumur !), aber es fühlt sich an wie ein Hack.Ich schätze die Vorschläge und Hilfe auf diesem.
Betreff: Effizienter Weg über JSL zum Ausblenden und/oder Ausschließen einer großen Anzahl von SpaltenHallo Sam,
Wie wäre es mit folgendem Skript? Es ist viel schneller.
dt << clear column selection();
dt << Select Columns( collist );
Wait( 0 );
Main Menu( "Cols:Hide/Unhide" );
Main Menu( "Cols:Exclude/Unexclude" );
dt << clear column selection();
Betreff: Effizienter Weg über JSL zum Ausblenden und/oder Ausschließen einer großen Anzahl von SpaltenIch habe ein paar Tricks ausprobiert, keiner hat funktioniert.
- Einschließen der Arbeit
dt << Begin Data Update;
//work here...
dt << End Data Update;
-Datentabelle unsichtbar machen
-Datentabelle privat machen
Welchen Zweck hat das Ausblenden und Ausschließen der Spalten in dieser Anwendung? Vielleicht gibt es Abhilfe.
Betreff: Effizienter Weg über JSL zum Ausblenden und/oder Ausschließen einer großen Anzahl von Spalten
Ich habe es auch versucht
collist << Hide(1);
collist << Exclude(1);
und das ist auch sehr langsam.