Begrenzung der Zeichenfolgenlänge, die in der Tabellenübersicht und in "Doppelte Zeilen auswählen" verwendet wirdDies ist eine FYI und vielleicht auch eine Frage.
Ein Client hat heute gefragt, ob die Zeichenfolgenlänge begrenzt ist, um zu beurteilen, ob Zeilen Duplikate sind, oder ob eine Tabellenzusammenfassung durchgeführt wird.Sie hatte Zeichenfolgen mit einer Länge von 8000 Zeichen in einer einzelnen Zelle.(Dies waren genetische Markerdaten.) Sie wollte sehen, wie viele echte Duplikate sie in einer Datenspalte hatte.Weder meldeten die richtigen Zeilen.Sie vermutete ein Problem mit der Saitenlänge.
Ich habe einige Brute-Force-Vergleiche durchgeführt und festgestellt, dass nur die ersten 2000 Zeichen verglichen werden, wenn Tabellenzusammenfassung ausgeführt oder doppelte Zeilen ausgewählt werden.
Ich habe auch festgestellt, dass etwas wie "if (col1 == col2," Match "," No Match ") nicht das Zeichenlimit von 2000 hat.(Mit anderen Worten, die gesamte Zeichenfolge (mindestens bis zu 8000 Zeichen) scheint für den Vergleich verwendet zu werden.)
Ich weiß nichts über andere Funktionen.
Dies ist also ein FYI, um den Vergleich langer Zeichenfolgen zu vermeiden ... und eine Frage: Weiß jemand, warum wir in diesen Fällen auf 2000 Zeichen beschränken?
Betreff: Begrenzung der Zeichenfolgenlänge, die in der Tabellenzusammenfassung und in Select Duplicate Rows verwendet wirdHallo Jerry,
Ich spekuliere hier, aber ich denke, was Ihr Kunde mit Tabellenzusammenfassung oder "Doppelte Zeilen auswählen" macht, ist unangemessen.Können Sie uns weitere Einzelheiten mitteilen? Ist es ein genetischer Code, der 8000 Zeichen lang ist und nur aus A, C, G und Ts besteht? Wenn ja, wäre dies ein unangemessener Ansatz.Es hört sich so an, als würden sie versuchen, einen quadratischen Stift in ein rundes Loch zu stecken.
Wenn sie JMP wirklich dafür verwenden möchten, ist es besser, aus jedem Zeichen eine einzelne Spalte zu erstellen und dann nach Duplikaten zwischen den Zeilen zu suchen.
Wichtiger ist ihr Ziel. Warum suchen sie nach Duplikaten?
Betreff: Begrenzung der Zeichenfolgenlänge, die in der Tabellenzusammenfassung und in Select Duplicate Rows verwendet wirdGuter Punkt Chris.Ja, sie betrachten ACGT-Zeichenfolgen.Mein Eindruck ist, dass sie 2000 Gruppen mit 4 Zeichen hatte, die alle zu einer 8000-Zeichenfolge zusammengefügt waren.Sie gab keine weiteren Details an, abgesehen davon, dass sie eine 8000-Zeichenfolge mit einer anderen vergleichen und nach Duplikaten suchen wollte.
Da ich nichts über ACGT-Zeichenfolgen und deren Verwendung weiß, wusste ich nicht, ob ich danach fragen sollte.(Ich wusste jedoch genug, um zu erkennen, dass sie an JMP Genomics interessiert sein könnte.Früher war ihnen JMPG nicht bekannt, aber jetzt knabbern sie!)
Ich werde fragen, was sie versucht zu tun.Schätzen Sie das Feedback!
Jerry
Betreff: Begrenzung der Zeichenfolgenlänge, die in der Tabellenzusammenfassung und in Select Duplicate Rows verwendet wirdInteressant. Es sieht so aus, als ob der Kunde Recht hat.
dt1=New Table( "2000 characters",
Add Rows( 2 ),
New Column( "Column 1",
Character,
"Nominal",
Formula(
If( Row() == 1,
Repeat( "A", 1999 ) || "1",
Repeat( "A", 1999 ) || "2"
)
),
)
);
//this summary table will have two rows
dt1<< Summary(
Group( :Column 1 ),
Freq( "None" ),
Weight( "None" )
);
dt2=New Table( "2001 characters",
Add Rows( 2 ),
New Column( "Column 1",
Character,
"Nominal",
Formula(
If( Row() == 1,
Repeat( "A", 2000 ) || "1",
Repeat( "A", 2000 ) || "2"
)
),
)
);
//this summary table will have only one row
dt2<< Summary(
Group( :Column 1 ),
Freq( "None" ),
Weight( "None" )
);
ich wette @chungwei wird einen Einblick haben.
Betreff: Begrenzung der Zeichenfolgenlänge, die in der Tabellenzusammenfassung und in Select Duplicate Rows verwendet wirdSicher, Jerry!
Es gibt andere einfache Tools (wie den von Ihnen verwendeten JSL-Code), die zum Vergleich lange Stiche untersuchen können. Von besonderem Interesse ist, dass nicht nur dieselben Zeichen in der Zeichenfolge dieselbe Länge haben, sondern auch die Reihenfolge, in der sie sich befinden. Echte Duplikate im Zeichen und in der Reihenfolge des Erscheinungsbilds dieser Zeichen.
Wenn sich jedoch jedes Zeichen (in diesem Fall Basis / Marker) in einer eigenen Spalte befand und alle diese Spalten ausgewählt wurden, um doppelte Zeilen auszuwählen, sollte die Tabellenzusammenfassung funktionieren (dies kann jedoch langsam sein).
Normalerweise ist dies ein Bioinformatik-Problem, und die Leute schreiben möglicherweise Code, um es zu lösen.
Betreff: Begrenzung der Zeichenfolgenlänge, die in der Tabellenzusammenfassung und in Select Duplicate Rows verwendet wirdFür das, was es wert ist, scheinen die Spaltenformeln Zeichenfolgen zu vergleichen, die mindestens 8K-Zeichen groß sind.
Das folgende Skript gibt an, welche 27 von 30 Zeilen Duplikate von 3 Zeichenfolgen mit 8001 Zeichen sind, die sich nur beim letzten Zeichen unterscheiden.
Names Default To Here(1);
a = repeat("0", 8000);
x = a ||"X";
y = a || "Y";
z = a || "Z";
vals = {x,y,z};
lis = {};
for(i=1, i<=30, i++,
insertinto(lis, eval(vals[randominteger(3)]));
);
dt = new table("xx", <<NEW column=""></NEW>Betreff: Begrenzung der Zeichenfolgenlänge, die in der Tabellenzusammenfassung und in Select Duplicate Rows verwendet wirdVielen Dank an alle.@brady_brady und @ Jeff_Perkinson Ihre Analyse ist eleganter als meine, aber wir sind zu dem gleichen Schluss gekommen ... Beschränkung auf 2000 Zeichen für Tabellenzusammenfassung und Auswählen doppelter Zeilen, aber Formeln scheinen alle Zeichen zu erkennen.
Hoffen @chungwei Wird es einige zusätzliche Erkenntnisse geben, vielleicht mehr Funktionen, die diese Einschränkung haben?
Betreff: Begrenzung der Zeichenfolgenlänge, die in der Tabellenzusammenfassung und in Select Duplicate Rows verwendet wirdSieht aus wie es ein Problem ist, an mehreren Stellen Zusammenfassung, Datenfilter, Verteilung.
Vielleicht habe ich an mehreren Stellen nicht alle Stellen überprüft, die Spaltendaten kategorisieren.
Es ist ein Käfer .