Importer les valeurs x et y du fichier texte vers la table jmpSalut,
Lire chaque ligne du fichier texte et importer chaque chaîne en tant que ligne distincte dans la table de données jmp
Modélisation statistique avancéeAccès aux donnéesPersonnalisation de masseRe : Importer les valeurs x et y du fichier texte vers la table jmp et créer une carte de plaquetteMerci Jarmo.
Re : Importer les valeurs x et y du fichier texte vers la table jmp et créer une carte de plaquetteVoici un exemple complet qui utilise un tableau associatif pour stocker des informations sur la plaquette et construit une table jmp à partir du fichier texte.
Voir plus...
J'ai également remarqué que JMP ne se comporte pas correctement avec les étiquettes de valeur lorsque "." est l'une des valeurs étiquetées. Je signalerai cela comme un bug quand j'aurai le temps
Voir plus...
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"})
)
);
Noms par défaut ici (1); dt = Nouveau tableau("Sans titre", Ajouter des lignes(4), Nouvelle colonne("Colonne 1", Caractère, "Nominal", Étiquettes de valeur({"." = "MANQUANT", "A" = "AAA", " B" = "BBB", "C" = "CCC"}), Utiliser les étiquettes de valeur (1), Définir la sélection, Définir les valeurs ({"A", "B", ".", "C"}) ) ) ;
Re : Importer les valeurs x et y du fichier texte vers la table jmp et créer une carte de plaquetteEncore une fois, rappelez-vous d'utiliser l'index de script et l'aide de jmp. Ce sont généralement les meilleures ressources pour apprendre ce type de script JMP.
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);
Re : Importer les valeurs x et y du fichier texte vers la table jmp et créer une carte de plaquetteMerci jamo @jthi pour m'avoir fait savoir ce qui me manquait. Je savais que j'étais proche. Pouvez-vous partager un exemple de code juste pour que je puisse m'y référer ? J'apprends encore à jouer avec des cordes
Re : Importer les valeurs x et y du fichier texte vers la table jmp et créer une carte de plaquetteJe changerais de méthode si vous voulez aussi les autres informations. Comme les données du fichier contiennent de nouvelles données sur chaque ligne (sauf pour wafermap), j'utiliserais Words() et je diviserais lors du changement de ligne (vous pouvez toujours rechercher le moment où wafermap démarre en utilisant Contains dans la liste que Words() produit, mais cela est un index dans une liste, pas dans une chaîne). Ensuite, j'ajouterais les informations au tableau associatif pour faciliter l'accès (cela nécessitera un peu de boucle et plus d'utilisation de Words()))
Re : Importer les valeurs x et y du fichier texte vers la table jmp et créer une carte de plaquetteJ'espère que tu vas bien @jthi ,!
Très petite question sur cette discussion-
Je souhaite également importer toutes les chaînes du fichier txt dans la table de données jmp, y compris les informations d'en-tête. Le tableau de données final doit contenir toutes les chaînes et chaque caractère doit être traité comme un mot distinct. Ça devrait ressembler à ça.

La logique que vous avez suggérée ne fonctionne pas après la ligne 13. Toute aide serait très appréciée
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, "" );
)
);Merci pour votre temps!
Re : Importer les valeurs x et y du fichier texte vers la table jmp et créer une carte de plaquetteVous pouvez utiliser Contient pour ignorer d'abord "MAP = {" ou effectuer une recherche à partir de la fin (lire l'index de script...)

Re : Importer les valeurs x et y du fichier texte vers la table jmp et créer une carte de plaquette@jthi
Il y a deux chaînes contenant " MAP = {" mis en évidence ci-dessous :

J'ai essayé d'utiliser l'instruction & pour ne pas sélectionner la première mais cela ne fonctionne pas.
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 ={"
Re : Importer les valeurs x et y du fichier texte vers la table jmp et créer une carte de plaquetteVous pouvez essayer Contient avec "MAP = {". Cela devrait vous donner l'emplacement de "MAP = {" dans la chaîne, puis utiliser ces connaissances avec Substr pour obtenir ce que vous voulez. Consultez également l'index des scripts (et éventuellement l'aide JMP que vous pouvez ouvrir à partir de l'index des scripts) pour comprendre comment fonctionne Substr (et d'autres fonctions).
Re : Importer les valeurs x et y du fichier texte vers la table jmp et créer une carte de plaquetteVous pouvez essayer Contient avec "MAP = {". Cela devrait vous donner l'emplacement de "MAP = {" dans la chaîne, puis utiliser ces connaissances avec Substr pour obtenir ce que vous voulez.
Re : Importer les valeurs x et y du fichier texte vers la table jmp et créer une carte de plaquette@txnelson ,
Votre approche fonctionne si le modèle de la première ligne correspond à l'instruction contain. J'ai plusieurs cartes de plaquettes qui n'auront pas les mêmes modèles. La seule similitude est que le motif de plaquette commence à la ligne numéro 21 du fichier texte. Existe-t-il un moyen de définir le numéro de ligne où le script commencera à lire ? J'ai joint un fichier texte de carte de plaquette pour référence (meilleure vue sur le bloc-notes ++)
Re : Importer les valeurs x et y du fichier texte vers la table jmp et créer une carte de plaquettemap_str = Substr(
demo_str,
Contains( demo_str, ".X." ),
Length( demo_str ) - Contains( demo_str, ".X." ) -1
);
Remarque : recherchez dans l'index des scripts la définition et les exemples de la fonction Stbstr().
Re : Importer les valeurs x et y du fichier texte vers la table jmp et créer une carte de plaquetteC'est une bonne explication @jthi .
Question rapide:
L'instruction ci-dessous commencera à lire les données de la deuxième ligne de la liste. Je ne veux pas lire la dernière ligne qui contient une accolade "}".
Comment puis-je définir la ligne de fin dans le script
map_str = Substr(demo_str, Contains(demo_str, ".X."));
Re : Importer les valeurs x et y du fichier texte vers la table jmp et créer une carte de plaquetteVous devez manipuler la chaîne que vous obtenez de Load Text File() de telle manière que vous vous retrouviez avec une chaîne qui contient uniquement la partie wafermap du fichier texte. Cela ne donnera pas la chaîne finale nécessaire mais donnera une idée de ce que vous pourriez faire. Consultez l'index des scripts (et l'aide JMP) pour savoir comment fonctionnent Substr et Contains. Il propose également une option sur l'utilisation de Words et Contains, qui nécessite également quelques modifications pour obtenir la liste correcte.
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);
Re : Importer les valeurs x et y du fichier texte vers la table jmp et créer une carte de plaquetteDésolé de vous déranger à nouveau. J'ai essayé substr mais il y a quelque chose qui n'est pas correct dans le code. Si tu pouvais modifier, ce serait génial
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 );
);
Re : Importer les valeurs x et y du fichier texte vers la table jmp et créer une carte de plaquetteVous devez utiliser une méthode pour obtenir uniquement la carte de la plaquette (si vous ne vous en souciez que). Actuellement, vous utilisez l'intégralité du fichier texte. Certaines options pour cela sont
- Expression régulière
- Substr avec Contient
- Mots et partage sur {}
- Mots et fractionnés lors du changement de ligne et combinez-les avec Contient à
- lignes de codage en dur et obtention d'une carte de plaquette basée sur celles-ci (généralement une très mauvaise idée)
Re : Importer les valeurs x et y du fichier texte vers la table jmp et créer une carte de plaquette@jthi
Juste une petite question
Le fichier texte réel contient des informations sur la plaquette au début. Je souhaite stocker les données de la ligne 21. J'ai modifié jsl comme ci-dessous. Il se lit comme prévu. Aucune suggestion?

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, "" );
);
Re : Importer les valeurs x et y du fichier texte vers la table jmp et créer une carte de plaquetteC'est un chef-d'œuvre. Merci beaucoup! :grinning_face:
Re : Importer les valeurs x et y du fichier texte vers la table jmp et créer une carte de plaquetteUtiliser un tableau plus simple
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);


Re : Importer les valeurs x et y du fichier texte vers la table jmp et créer une carte de plaquetteApprécié @jthi
Je suis nouveau dans le codage JSL. Pouvez-vous partager un exemple ? Juste comme référence
Re : Importer les valeurs x et y du fichier texte vers la table jmp et créer une carte de plaquetteInitialisez la chaîne vide, parcourez les valeurs Y des tableaux dans l'ordre, obtenez les numéros de ligne pour y actuel, utilisez ces numéros de ligne pour obtenir des bacs, ajoutez ces bacs à la chaîne initialisée (Concat Items() devrait vous aider), ajoutez un changement de ligne et continuez au Y suivant. Après avoir bouclé, coupez les espaces si nécessaire.
Re : Importer les valeurs x et y du fichier texte vers la table jmp et créer une carte de plaquetteCela fonctionne à merveille. Merci beaucoup @jthi ,
J'essaie d'importer les mots du fichier texte dans la table de données jmp, puis d'attribuer des lettres différentes à ces bacs dans la table jmp, puis de les reconvertir en fichier texte avec le formatage d'origine.
map_str =
".....GGG.....
....BGGGG....
...BGGGGGG...
..GGGGGGGGG..
.GGGGGGBBGGG.
GGGGGGGBBGGGB
GGGGGGGGGGGGB
GGGGGGGGGGGGB
.GGGGGGGGGGG.
..GGGGGGGGG..
...GGGGGGG...
....GGGGG....
.....GGG.....";
Comment puis-je reconvertir la table de données X , Y et les bacs au format de fichier texte avec le formatage conservé. Toute suggestion?
Re : Importer les valeurs x et y du fichier texte vers la table jmp et créer une carte de plaquetteJe ne peux pas partager le code que j'utilise mais voici un exemple rapide avec quelques idées
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>

Re : Importer les valeurs x et y du fichier texte vers la table jmp et créer une carte de plaquette@jthi
Je souhaite stocker l'emplacement de la matrice et les lettres dans les colonnes X et Y du tableau de données jmp à partir du fichier texte joint. H Comment utiliser JSL pour traiter un tel fichier txt sous forme de données tabulaires ?

Tableau JMP :

Re : Importer les valeurs x et y du fichier texte vers la table jmp et créer une carte de plaquetteMerci @jthi
Pourriez-vous partager le code juste pour que je puisse m'y référer ?
Merci,
Jack
Re : Importer les valeurs x et y du fichier texte vers la table jmp et créer une carte de plaquetteJ'ai formaté différents types de wafermaps avec JMP en coordonnées XY (et fichier cartographique) basés sur des fichiers texte. En le faisant par script "manuel", je pense que le processus ressemblait à ceci :
- Analysez le fichier texte et obtenez des informations importantes (Regex, Words et autres fonctions de caractères sont utiles ici)
- Nombre de lignes, nombre de colonnes
- Taille X, taille Y
- Types de bacs (en particulier le type nul/vide)
- Carte des plaquettes
- Toute autre information (WAFER ID, type...)
- Créez une nouvelle table de données dans laquelle vous pouvez collecter les résultats dans
- Le nombre de lignes est probablement le nombre de lignes * le nombre de colonnes
- Vous avez besoin d'au moins les colonnes X et Y, et si vous êtes intéressé par différents compartiments, ajoutez également une colonne pour cela
- Parcourez la chaîne wafermap en utilisant Words(wafermap_txt, "\!N") pour obtenir chaque ligne et construisez les valeurs en multipliant xsize/ysize en fonction de la colonne que vous remplissez.
- Cette étape est beaucoup plus facile si vous ne vous souciez pas des largeurs et des hauteurs et que vous pouvez simplement utiliser 1 / valeur fixe
- Cela pourrait également être une bonne idée de simplement les coder en tant que coordonnées dont les fichiers de carte JMP auraient besoin, cela vous permet de créer des fichiers de forme de carte en utilisant les tailles.
- Si vous n'êtes intéressé que par la carte de plaquette, vous pouvez laisser de côté les bacs nuls, mais vous devez en tenir compte lors de la construction de la carte et
Re : Importer les valeurs x et y du fichier texte vers la table jmp et créer une carte de plaquetteRecherchez des wafermaps dans le complément jmp et dans les discussions passées. Beaucoup de réponses là-bas