Importieren Sie x- und y-Werte aus der Textdatei in die JMP-TabelleHallo,
Lesen Sie jede Zeile in der Textdatei und importieren Sie jede Zeichenfolge als separate Zeile in die JMP-Datentabelle
Erweiterte statistische ModellierungDatenzugriffMassenanpassungBetreff: X- und Y-Werte aus der Textdatei in die JMP-Tabelle importieren und Wafer-Map erstellenDanke Jarmo.
Betreff: X- und Y-Werte aus der Textdatei in die JMP-Tabelle importieren und Wafer-Map erstellenHier ist ein vollständiges Beispiel dafür, das ein assoziatives Array verwendet, um Informationen über den Wafer zu speichern und eine JMP-Tabelle aus der Textdatei zu erstellen.
Mehr sehen...
Mir ist auch aufgefallen, dass JMP sich bei Wertbeschriftungen anscheinend nicht richtig verhält, wenn „.“ ist einer der Werte, die gekennzeichnet werden. Ich werde dies als Fehler melden, wenn ich Zeit habe
Mehr sehen...
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(4),
New Column("Column 1",
Character,
"Nominal",
Value Labels({"." = "MISSING", "A" = "AAA", "B" = "BBB", "C" = "CCC"}),
Use Value Labels(1),
Set Selected,
Set Values({"A", "B", ".", "C"})
)
);
Namen standardmäßig hier(1); dt = New Table("Untitled", Add Rows(4), New Column("Column 1", Character, "Nominal", Value Labels({"." = "MISSING", "A" = "AAA", " B" = "BBB", "C" = "CCC"}), Wertebeschriftungen verwenden(1), Ausgewählte festlegen, Werte festlegen({"A", "B", ".", "C"}) ) ) ;
Betreff: X- und Y-Werte aus der Textdatei in die JMP-Tabelle importieren und Wafer-Map erstellenErinnern Sie sich erneut daran, den Skriptindex und die JMP-Hilfe zu verwenden. Sie sind in der Regel die besten Ressourcen, um diese Art von JMP-Skripting zu erlernen
Names Default To Here(1);
example_str = "\[
WAFER_MAP = {
WAFER_ID = "ABC"
A B C = 123
]\";
example_list = Words(example_str, "\!N");
Show(example_list);
Remove From(example_list, 1); // drop first index. Why it is fine in this case?
// loop over lines until "MAP = {" I'll just use hardcoded index for example
// I'll also save values to variables
// but associative array would be better in this case
wafer_id_line = example_list[1];
Show(wafer_id_line);
wafer_id = Word(2, wafer_id_line, "="); // you might have to remove extra quotes
show(wafer_id);
example_aa = Associative Array();
//adding values to associative array could be done with something like
example_aa["WAFER_ID"] = Word(2, wafer_id_line, "="); // you might have to remove extra quotes
show(example_aa);
Betreff: X- und Y-Werte aus der Textdatei in die JMP-Tabelle importieren und Wafer-Map erstellenDanke, Jamo @jthi dafür, dass du mir mitgeteilt hast, was mir entgangen ist. Ich wusste, dass ich nah dran war. Können Sie mir einen Beispielcode mitteilen, damit ich darauf verweisen kann? Ich lerne immer noch, wie man mit Saiten spielt
Betreff: X- und Y-Werte aus der Textdatei in die JMP-Tabelle importieren und Wafer-Map erstellenIch würde die Methode ändern, wenn Sie auch die anderen Informationen wünschen. Da die Daten in der Datei in jeder Zeile neue Daten enthalten (mit Ausnahme von Wafermap), würde ich Words() verwenden und bei Zeilenwechsel aufteilen (Sie können immer noch suchen, wann Wafermap beginnt, indem Sie „Contains“ aus der Liste verwenden, die Words() erzeugt, aber es ist ein Index in einer Liste, nicht in einer Zeichenfolge. Dann würde ich die Informationen zum assoziativen Array hinzufügen, um den Zugriff darauf zu erleichtern (dies erfordert einige Schleifen und mehr Verwendung von Words()))
Betreff: X- und Y-Werte aus der Textdatei in die JMP-Tabelle importieren und Wafer-Map erstellenIch hoffe es geht dir gut @jthi ,!
Ganz kurze Frage zu dieser Diskussion:
Ich möchte auch alle Zeichenfolgen aus der TXT-Datei in die JMP-Datentabelle importieren, einschließlich der Header-Informationen. Die endgültige Datentabelle sollte alle Zeichenfolgen enthalten und jedes Zeichen sollte als separates Wort behandelt werden. Es sollte so aussehen.

Die von Ihnen vorgeschlagene Logik funktioniert nach Zeile 13 nicht mehr. Jede Hilfe wäre sehr dankbar
map_str =
"\[
WAFER_MAP = {
WAFER_ID = ""
BIN G = "Passing"
MAP = {
.....GGG.....
....BGGGG....
...BGGGGGG...
..GGGGGGGGG..
.GGGGGGBBGGG.
GGGGGGGBBGGGB
GGGGGGGGGGGGB
GGGGGGGGGGGGB
.GGGGGGGGGGG.
..GGGGGGGGG..
...GGGGGGG...
....GGGGG....
.....GGG.....
}
}
]\";
l = Words( map_str, "\!N" );
rowc = N Items( l );
colc = N Items( Words( l[1], "" ) );
dt = New Table( "Summary Bins",
Add Rows( rowc * colc ),
New Column( "X coord", Numeric, Ordinal ),
New Column( "Y coord", Numeric, Ordinal ),
New Column( "Bins", Character, Nominal, Label( 1 ) )
);
Try(
For Each( {line, idx}, l,
cur_rows = ((idx - 1) * colc :: (idx * colc - 1)) + 1;
dt[cur_rows, "X coord"] = ((1 :: colc))`;
;
dt[cur_rows, "Y coord"] = (J( 1, colc ) * (idx))`;
dt[cur_rows, "Bins"] = Words( line, "" );
)
);Vielen Dank für Ihre Zeit!
Betreff: X- und Y-Werte aus der Textdatei in die JMP-Tabelle importieren und Wafer-Map erstellenSie können „Contains“ verwenden, um zuerst „MAP = {“ zu überspringen oder vom Ende aus zu suchen (Skriptindex lesen ...)

Betreff: X- und Y-Werte aus der Textdatei in die JMP-Tabelle importieren und Wafer-Map erstellen@jthi
Es gibt zwei Zeichenfolgen mit „ MAP = {" unten hervorgehoben:

Ich habe versucht, die &-Anweisung zu verwenden, um nicht die erste auszuwählen, aber es funktioniert nicht.
demo_str = Load text file("New wafer map.txt");
a = Contains(demo_str,"MAP = {") & Contains(demo_str,"WAFER_MAP = {") ==0; // get the location of the string "MAP ={"
Betreff: X- und Y-Werte aus der Textdatei in die JMP-Tabelle importieren und Wafer-Map erstellenSie könnten Contains mit „MAP = {“ versuchen. Dies sollte Ihnen die Position von „MAP = {“ in der Zeichenfolge geben und dieses Wissen dann mit Substr nutzen, um das zu bekommen, was Sie wollen. Sehen Sie sich auch den Skriptindex (und möglicherweise die JMP-Hilfe, die Sie über den Skriptindex öffnen können) an, um zu verstehen, wie Substr (und andere Funktionen) funktionieren.
Betreff: X- und Y-Werte aus der Textdatei in die JMP-Tabelle importieren und Wafer-Map erstellenSie könnten Contains mit „MAP = {“ versuchen. Dies sollte Ihnen die Position von „MAP = {“ in der Zeichenfolge geben und dieses Wissen dann mit Substr nutzen, um das zu bekommen, was Sie wollen
Betreff: X- und Y-Werte aus der Textdatei in die JMP-Tabelle importieren und Wafer-Map erstellen@txnelson ,
Ihr Ansatz funktioniert, wenn das Muster in der ersten Zeile mit der include-Anweisung übereinstimmt. Ich habe mehrere Waferkarten, die nicht die gleichen Muster haben. Die einzige Ähnlichkeit besteht darin, dass das Waffelmuster in der Textdatei in Zeile 21 beginnt. Gibt es eine Möglichkeit, die Zeilennummer zu definieren, ab der das Skript mit dem Lesen beginnt? Ich habe eine Wafer-Map-Textdatei als Referenz angehängt (bessere Ansicht im Notizblock ++)
Betreff: X- und Y-Werte aus der Textdatei in die JMP-Tabelle importieren und Wafer-Map erstellenmap_str = Substr(
demo_str,
Contains( demo_str, ".X." ),
Length( demo_str ) - Contains( demo_str, ".X." ) -1
);
Hinweis: Definitionen und Beispiele für die Funktion Stbstr() finden Sie im Skriptindex
Betreff: X- und Y-Werte aus der Textdatei in die JMP-Tabelle importieren und Wafer-Map erstellenDas ist eine gute Erklärung @jthi .
Schnelle Frage:
Die folgende Anweisung beginnt mit dem Lesen von Daten aus der zweiten Zeile der Liste. Ich möchte nicht die letzte Zeile lesen, die die geschweifte Klammer „}“ enthält.
Wie kann ich die Endzeile im Skript definieren?
map_str = Substr(demo_str, Contains(demo_str, ".X."));
Betreff: X- und Y-Werte aus der Textdatei in die JMP-Tabelle importieren und Wafer-Map erstellenSie müssen die Zeichenfolge, die Sie von Load Text File() erhalten, so manipulieren, dass Sie am Ende eine Zeichenfolge erhalten, die nur den Wafermap-Teil der Textdatei enthält. Dies gibt nicht die endgültige benötigte Zeichenfolge an, gibt aber eine Vorstellung davon, was Sie tun könnten. Informationen zur Funktionsweise von „Substr“ und „Contains“ finden Sie im Scripting Index (und in der JMP-Hilfe). Es gibt auch eine Option zur Verwendung von Wörtern und Enthält, die ebenfalls einige Änderungen erfordert, um eine korrekte Liste zu erhalten.
Names Default To Here(1);
demo_str = "SOMETHING
TEXT
EXAMPLE
MAP = {
.X.
XXX
.X.
}";
map_str = Substr(demo_str, Contains(demo_str, "MAP = {"));
show(map_str);
stop();
demo_list = Words(demo_str, "\!N");
map_start = Contains(demo_list, "MAP = {");
map_list = demo_list[map_start::N Items(demo_list)];
show(map_list);
Betreff: X- und Y-Werte aus der Textdatei in die JMP-Tabelle importieren und Wafer-Map erstellenTut mir Leid dass ich dich nochmal störe. Ich habe substr ausprobiert, aber irgendetwas stimmt im Code nicht. Wenn Sie Änderungen vornehmen könnten, wäre es großartig
map_str = Load Text File();
l = Words( map_str, "\!N" );
rowc = N Items( l );
colc = N Items( Words( l[21], "" ) ); //// edits
dt = New Table( "Untitled",
Add Rows( rowc * colc ),
New Column( "X", Numeric, Continuous ),
New Column( "Y", Numeric, Continuous ),
New Column( "bin", Character, Nominal, Label( 1 ) )
);
For Each( {line, idx}, l,
cur_rows = ((idx - 1) * colc :: (idx * colc - 1)) + 1;
dt[cur_rows, "X"] = ((1 :: colc))`;
dt[cur_rows, "Y"] = (J( 1, colc ) * (idx))`;
dt[cur_rows, "bin"] = substr( line, 1 );
);
Betreff: X- und Y-Werte aus der Textdatei in die JMP-Tabelle importieren und Wafer-Map erstellenSie sollten eine Methode verwenden, um nur die Wafermap zu erhalten (wenn Sie nur daran interessiert sind). Derzeit verwenden Sie die gesamte Textdatei. Einige Optionen dafür sind
- Regex
- Substr mit Enthält
- Wörter und Split auf {}
- Wörter und bei Zeilenwechsel aufteilen und mit „Enthält zu“ kombinieren
- harte Codierungszeilen und Wafermap basierend auf diesen (normalerweise sehr schlechte Idee)
Betreff: X- und Y-Werte aus der Textdatei in die JMP-Tabelle importieren und Wafer-Map erstellen@jthi
Nur eine kurze Frage
Die eigentliche Textdatei enthält am Anfang Wafer-Informationen. Ich möchte die Daten aus Zeile 21 speichern. Ich habe jsl wie folgt geändert. Es liest sich wie erwartet. Irgendwelche Vorschläge?

map_str = Load Text File();
l = Words( map_str, "\!N" );
rowc = N Items( l );
colc = N Items( Words( l[21], "" ) ); //// edits
dt = New Table( "Untitled",
Add Rows( rowc * colc ),
New Column( "X", Numeric, Continuous ),
New Column( "Y", Numeric, Continuous ),
New Column( "bin", Character, Nominal, Label( 1 ) )
);
For Each( {line, idx}, l,
cur_rows = ((idx - 1) * colc :: (idx * colc - 1)) + 1;
dt[cur_rows, "X"] = ((1 :: colc))`;
dt[cur_rows, "Y"] = (J( 1, colc ) * (idx))`;
dt[cur_rows, "bin"] = Words( line, "" );
);
Betreff: X- und Y-Werte aus der Textdatei in die JMP-Tabelle importieren und Wafer-Map erstellenEs ist ein Meisterwerk. Vielen Dank! :grinning_face:
Betreff: X- und Y-Werte aus der Textdatei in die JMP-Tabelle importieren und Wafer-Map erstellenVerwendung einer einfacheren Tabelle
Names Default To Here(1);
// Simple example table
dt = New Table(
"Untitled",
Add Rows(9),
New Column("X", Numeric, "Continuous", Format("Best", 12), Set Values([1, 2, 3, 1, 2, 3, 1, 2, 3])),
New Column("Y", Numeric, "Continuous", Format("Best", 12), Set Values([1, 1, 1, 2, 2, 2, 3, 3, 3])),
New Column("bin", Character, "Nominal", Set Values({".", "X", ".", "X", "X", "X", ".", "X", "."}))
);
//empty string initialization
str = "";
// get unique values for Y
// I will use Associative array instead of Summarize to keep correct format of values
// Summarize would change them to strings
y_uniq = Associative Array(:Y) << get keys;
For Each({cur_y}, y_uniq,
cur_line_rows = Loc(dt[0, "Y"], cur_y); // Loc() with datatable subscripting
line_bins = dt[cur_line_rows, "bin"]; // more datatable subscripting
bin_str = Concat Items(line_bins, "");
str = str || bin_str || "\!N";
);
// remove extra whitespace
str = Trim Whitespace(str);
Write(str);


Betreff: X- und Y-Werte aus der Textdatei in die JMP-Tabelle importieren und Wafer-Map erstellenGeschätzt @jthi
Ich bin neu in der JSL-Codierung. Können Sie ein Beispiel nennen? Nur als Referenz
Betreff: X- und Y-Werte aus der Textdatei in die JMP-Tabelle importieren und Wafer-Map erstellenLeere Zeichenfolge initialisieren, die Y-Werte der Tabelle der Reihe nach durchlaufen, Zeilennummern für das aktuelle y abrufen, diese Zeilennummern verwenden, um Bins abzurufen, diese Bins zur initialisierten Zeichenfolge hinzufügen (Concat Items() sollte dabei helfen), Zeilenänderung hinzufügen und fortfahren zum nächsten Y. Schneiden Sie nach der Schleife ggf. Leerzeichen ab.
Betreff: X- und Y-Werte aus der Textdatei in die JMP-Tabelle importieren und Wafer-Map erstellenEs funktioniert wunderbar. Vielen Dank @jthi ,
Ich versuche, die Wörter aus der Textdatei in die JMP-Datentabelle zu importieren, diesen Bins in der JMP-Tabelle dann andere Buchstaben zuzuweisen und sie dann mit der ursprünglichen Formatierung wieder in eine Textdatei zu konvertieren
map_str =
".....GGG.....
....BGGGG....
...BGGGGGG...
..GGGGGGGGG..
.GGGGGGBBGGG.
GGGGGGGBBGGGB
GGGGGGGGGGGGB
GGGGGGGGGGGGB
.GGGGGGGGGGG.
..GGGGGGGGG..
...GGGGGGG...
....GGGGG....
.....GGG.....";
Wie konvertiere ich die Datentabelle X, Y und Bins zurück in das Textdateiformat, wobei die Formatierung beibehalten wird? Irgendein Vorschlag?
Betreff: X- und Y-Werte aus der Textdatei in die JMP-Tabelle importieren und Wafer-Map erstellenIch kann den von mir verwendeten Code nicht weitergeben, aber hier ist ein kurzes Beispiel mit einigen Ideen
Names Default To Here(1);
// load text file
// parse interesting things
// get map to string
map_str =
".....GGG.....
....BGGGG....
...BGGGGGG...
..GGGGGGGGG..
.GGGGGGBBGGG.
GGGGGGGBBGGGB
GGGGGGGGGGGGB
GGGGGGGGGGGGB
.GGGGGGGGGGG.
..GGGGGGGGG..
...GGGGGGG...
....GGGGG....
.....GGG.....";
l = Words(map_str, "\!N");
rowc = N Items(l);
colc = N Items(Words(l[1], ""));
dt = New Table("Untitled",
Add Rows(rowc * colc),
New Column("X", Numeric, Continuous),
New Column("Y", Numeric, Continuous),
New Column("bin", Character, Nominal, Label(1))
);
For Each({line, idx}, l,
cur_rows = ((idx - 1) * colc::(idx * colc - 1)) + 1;
dt[cur_rows, "X"] = ((1::colc))`;
dt[cur_rows, "Y"] = (J(1, colc) * (idx))`;
dt[cur_rows, "bin"] = Words(line, "");
);
nw = New Window("test",
H List Box(
align("center"),
Text Box(map_str, <<SET font="" name=""></SET>

Betreff: X- und Y-Werte aus der Textdatei in die JMP-Tabelle importieren und Wafer-Map erstellen@jthi
Ich möchte die Matrizenposition und die Buchstaben in den Spalten X und Y der JMP-Datentabelle aus der angehängten Textdatei speichern. H Wie kann ich JSL verwenden, um eine solche TXT-Datei als Tabellendaten zu verarbeiten?

JMP-Tabelle:

Betreff: X- und Y-Werte aus der Textdatei in die JMP-Tabelle importieren und Wafer-Map erstellenDanke @jthi
Würde es Ihnen etwas ausmachen, den Code mitzuteilen, damit ich darauf verweisen kann?
Danke,
Jack
Betreff: X- und Y-Werte aus der Textdatei in die JMP-Tabelle importieren und Wafer-Map erstellenIch habe mit JMP einige verschiedene Arten von Wafermaps basierend auf Textdateien in XY-Koordinaten (und Kartendateien) formatiert. Ich glaube, dass der Prozess bei der „manuellen“ Skripterstellung ungefähr so ablief:
- Analysieren Sie die Textdatei und erhalten Sie wichtige Informationen (Regex, Wörter und andere Zeichenfunktionen sind hier hilfreich)
- Zeilenanzahl, Spaltenanzahl
- X-Größe, Y-Größe
- Bin-Typen (insbesondere Null-/Leer-Typ)
- Wafermap
- Alle weiteren Informationen (WAFER-ID, Typ...)
- Erstellen Sie eine neue Datentabelle, in der Sie die Ergebnisse sammeln können
- Die Zeilenanzahl ist höchstwahrscheinlich die Zeilenanzahl * Spaltenanzahl
- Sie benötigen mindestens X- und Y-Spalten, und wenn Sie an verschiedenen Bins interessiert sind, fügen Sie auch hierfür eine Spalte hinzu
- Durchlaufen Sie die Wafermap-Zeichenfolge, indem Sie Words(wafermap_txt, "\!N") verwenden, um jede Zeile abzurufen und die Werte durch Multiplikation von xsize/ysize zu erstellen, je nachdem, welche Spalte Sie füllen.
- Dieser Schritt ist viel einfacher, wenn Ihnen die Breiten und Höhen egal sind und Sie einfach 1 / festen Wert verwenden können
- Es könnte auch eine gute Idee sein, sie einfach als Koordinaten zu kodieren, die JMP-Kartendateien benötigen würden. Auf diese Weise können Sie Kartenformdateien erstellen, indem Sie die Größen verwenden.
- Wenn Sie nur an der Wafermap interessiert sind, können Sie Null-Bins weglassen, müssen dies jedoch beim Erstellen der Karte berücksichtigen
Betreff: X- und Y-Werte aus der Textdatei in die JMP-Tabelle importieren und Wafer-Map erstellenDurchsuchen Sie das JMP-Add-In und die vergangenen Diskussionen nach Wafermaps. Da gibt es viele Antworten