Importe los valores xey del archivo de texto a la tabla jmpHola,
Leer cada línea en un archivo de texto e importar cada cadena como una fila separada en la tabla de datos jmp
Modelado estadístico avanzadoAcceso a los datosLa personalización en masaRe: Importar valores x e y del archivo de texto a la tabla jmp y crear un mapa de obleaGracias Jarmo.
Re: Importar valores x e y del archivo de texto a la tabla jmp y crear un mapa de obleaA continuación se muestra un ejemplo completo de esto que utiliza una matriz asociativa para almacenar información sobre la oblea y crea una tabla jmp a partir del archivo de texto.
Ver más...
También noté que parece que JMP no se comporta correctamente con las etiquetas de valor cuando "." es uno de los valores que se está etiquetando. Informaré esto como un error cuando tenga tiempo.
Ver más...
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"})
)
);
Nombres predeterminados aquí (1); dt = Nueva tabla("Sin título", Agregar filas(4), Nueva columna("Columna 1", Carácter, "Nominal", Etiquetas de valor({"." = "MISSING", "A" = "AAA", " B" = "BBB", "C" = "CCC"}), Usar etiquetas de valores(1), Establecer seleccionados, Establecer valores({"A", "B", ".", "C"}) ) ) ;
Re: Importar valores x e y del archivo de texto a la tabla jmp y crear un mapa de obleaNuevamente, le recordamos que debe utilizar el índice de secuencias de comandos y la ayuda jmp. Suelen ser los mejores recursos para aprender este tipo de JMP Scripting.
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: Importar valores x e y del archivo de texto a la tabla jmp y crear un mapa de obleaGracias, jamo @jthi por dejarme saber lo que me estaba perdiendo. Sabía que estaba cerca. ¿Puedes compartir un código de ejemplo para que pueda consultarlo? Todavía estoy aprendiendo a jugar con cuerdas.
Re: Importar valores x e y del archivo de texto a la tabla jmp y crear un mapa de obleaCambiaría el método si también quieres otra información. Como los datos en el archivo tienen datos nuevos en cada línea (excepto el mapa de oblea), usaría Words() y dividiría al cambiar de fila (aún puede buscar cuándo comienza el mapa de oblea usando Contiene de la lista que produce Words(), pero es un índice en una lista, no en una cadena). Luego agregaría la información a una matriz asociativa para facilitar el acceso (esto requerirá algunos bucles y más uso de Words()))
Re: Importar valores x e y del archivo de texto a la tabla jmp y crear un mapa de obleaEspero que estés bien @jthi ,!
Una pregunta muy rápida sobre esta discusión.
También me gustaría importar todas las cadenas del archivo txt en la tabla de datos jmp, incluida la información del encabezado. La tabla de datos final debe contener todas las cadenas y cada carácter debe tratarse como una palabra independiente. Debe tener un aspecto como este.

La lógica que sugeriste no funciona después de la fila 13. Cualquier ayuda sería muy apreciada.
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, "" );
)
);¡Gracias por tu tiempo!
Re: Importar valores x e y del archivo de texto a la tabla jmp y crear un mapa de obleaPuede usar Contiene para omitir primero "MAP = {" o buscar desde el final (leer el índice de secuencias de comandos...)

Re: Importar valores x e y del archivo de texto a la tabla jmp y crear un mapa de oblea@jthi
Hay dos cadenas que contienen " MAPA = {" resaltado a continuación:

Intenté usar & declaración para no seleccionar la primera pero no funciona.
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: Importar valores x e y del archivo de texto a la tabla jmp y crear un mapa de obleaPuedes probar Contiene con "MAP = {". Esto debería darle la ubicación de "MAP = {" en la cadena y luego usar ese conocimiento con Substr para obtener lo que desea. Consulte también el índice de secuencias de comandos (y posiblemente la ayuda de JMP que puede abrir desde el índice de secuencias de comandos) para comprender cómo funcionan Substr (y otras funciones).
Re: Importar valores x e y del archivo de texto a la tabla jmp y crear un mapa de obleaPuedes probar Contiene con "MAP = {". Esto debería darle la ubicación de "MAP = {" en la cadena y luego usar ese conocimiento con Substr para obtener lo que desea.
Re: Importar valores x e y del archivo de texto a la tabla jmp y crear un mapa de oblea@txnelson ,
Su enfoque funciona si el patrón de la primera fila coincide con la declaración de contenido. Tengo varios mapas de obleas que no tendrán los mismos patrones. La única similitud es que el patrón de oblea comienza en la fila número 21 del archivo de texto. ¿Hay alguna manera de definir el número de fila donde comenzará a leerse el script? He adjuntado un archivo de texto de mapa de oblea como referencia (mejor vista en el bloc de notas ++)
Re: Importar valores x e y del archivo de texto a la tabla jmp y crear un mapa de obleamap_str = Substr(
demo_str,
Contains( demo_str, ".X." ),
Length( demo_str ) - Contains( demo_str, ".X." ) -1
);
Nota: Busque en el índice de secuencias de comandos la definición y los ejemplos de la función Stbstr().
Re: Importar valores x e y del archivo de texto a la tabla jmp y crear un mapa de obleaEsa es una buena explicación. @jthi .
Pregunta rápida:
La siguiente declaración comenzará a leer datos de la segunda fila de la lista. No quiero leer la última fila que contiene la llave "}".
¿Cómo puedo definir la línea final en el script?
map_str = Substr(demo_str, Contains(demo_str, ".X."));
Re: Importar valores x e y del archivo de texto a la tabla jmp y crear un mapa de obleaDebe manipular la cadena que obtiene de Load Text File() de tal manera que termine con una cadena que contenga solo la parte del mapa de oblea del archivo de texto. Esto no proporcionará la cadena final necesaria, pero te dará una idea de lo que puedes hacer. Consulte el Índice de secuencias de comandos (y la Ayuda de JMP) sobre cómo funcionan Substr y Contiene. También tiene una opción sobre el uso de Palabras y Contiene, que también necesita algunas modificaciones para obtener la lista correcta.
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: Importar valores x e y del archivo de texto a la tabla jmp y crear un mapa de obleaLamento molestarle de nuevo. Intenté substr pero hay algo que no es correcto en el código. Si pudieras modificarlo seria genial.
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: Importar valores x e y del archivo de texto a la tabla jmp y crear un mapa de obleaDeberías usar algún método para obtener solo el mapa de oblea (si solo te importa). Actualmente estás utilizando el archivo de texto completo. Algunas opciones para eso son
- expresión regular
- Substr con contiene
- Palabras y división en {}
- Las palabras y la división en la fila cambian y combinan eso con Contiene para
- líneas de codificación estrictas y obtención de mapas de obleas basados en ellas (generalmente una muy mala idea)
Re: Importar valores x e y del archivo de texto a la tabla jmp y crear un mapa de oblea@jthi
Sólo una pregunta rápida
El archivo de texto real contiene información de oblea al principio. Quiero almacenar los datos de la fila 21. Modifiqué jsl como se muestra a continuación. Se lee como se esperaba. ¿Alguna sugerencia?

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: Importar valores x e y del archivo de texto a la tabla jmp y crear un mapa de obleaEs una obra de arte. ¡Muchas gracias! :cara_sonriente:
Re: Importar valores x e y del archivo de texto a la tabla jmp y crear un mapa de obleaUsando una tabla más 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: Importar valores x e y del archivo de texto a la tabla jmp y crear un mapa de obleaApreciado @jthi
Soy nuevo en la codificación JSL. ¿Puedes compartir un ejemplo? solo como referencia
Re: Importar valores x e y del archivo de texto a la tabla jmp y crear un mapa de obleaInicialice una cadena vacía, recorra los valores Y de las tablas en orden, obtenga los números de fila para la y actual, use esos números de fila para obtener contenedores, agregue esos contenedores a la cadena inicializada (Concat Items() debería ayudar con esto), agregue el cambio de fila y continúe al siguiente Y. Después del bucle, recorte los espacios en blanco si es necesario.
Re: Importar valores x e y del archivo de texto a la tabla jmp y crear un mapa de obleaFunciona a las mil maravillas. Muchas gracias @jthi ,
Estoy intentando importar las palabras del archivo de texto a la tabla de datos jmp y luego asignar letras diferentes a esos contenedores en la tabla jmp y luego convertirlas nuevamente a un archivo de texto con el formato original.
map_str =
".....GGG.....
....BGGGG....
...BGGGGGG...
..GGGGGGGGG..
.GGGGGGBBGGG.
GGGGGGGBBGGGB
GGGGGGGGGGGGB
GGGGGGGGGGGGB
.GGGGGGGGGGG.
..GGGGGGGGG..
...GGGGGGG...
....GGGGG....
.....GGG.....";
¿Cómo convierto la tabla de datos X, Y y los contenedores nuevamente al formato de archivo de texto manteniendo el formato? ¿Cualquier sugerencia?
Re: Importar valores x e y del archivo de texto a la tabla jmp y crear un mapa de obleaNo puedo compartir el código que uso, pero aquí hay un ejemplo rápido con algunas ideas.
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: Importar valores x e y del archivo de texto a la tabla jmp y crear un mapa de oblea@jthi
Quiero almacenar la ubicación del troquel y las letras en las columnas X e Y de la tabla de datos jmp del archivo de texto adjunto. h ¿Cómo utilizar JSL para procesar dicho archivo txt como datos tabulares?

tabla JMP:

Re: Importar valores x e y del archivo de texto a la tabla jmp y crear un mapa de obleaGracias @jthi
¿Te importaría compartir el código para que pueda recomendarlo?
Gracias,
Jacobo
Re: Importar valores x e y del archivo de texto a la tabla jmp y crear un mapa de obleaHe formateado un par de tipos diferentes de mapas de obleas con JMP en coordenadas XY (y archivos de mapas) basados en archivos de texto. Al hacerlo mediante secuencias de comandos "manuales", creo que el proceso fue algo como esto:
- Analice el archivo de texto y obtenga información importante (Regex, Words y otras funciones de caracteres son útiles aquí)
- Recuento de filas, Recuento de columnas
- Tamaño X, tamaño Y
- Tipos de contenedores (especialmente tipo nulo/vacío)
- Mapa de obleas
- Cualquier otro dato (WAFER ID, tipo...)
- Cree una nueva tabla de datos en la que pueda recopilar los resultados.
- Lo más probable es que el recuento de filas sea recuento de filas * recuento de columnas
- Necesita al menos las columnas X e Y, y si está interesado en diferentes contenedores, agregue una columna para eso también
- Recorra la cadena del mapa de oblea usando Words(wafermap_txt, "\!N") para obtener cada línea y construir los valores multiplicando xsize/ysize dependiendo de la columna que esté completando.
- Este paso es mucho más fácil si no te importan los anchos y los altos y solo puedes usar 1/valor fijo
- También podría ser una buena idea simplemente codificarlos como coordenadas que necesitarían los archivos de mapas JMP, esto le permite crear archivos de formas de mapas utilizando los tamaños.
- Si solo está interesado en el mapa de obleas, puede omitir los contenedores nulos, pero debe tenerlo en cuenta al crear el mapa y
Re: Importar valores x e y del archivo de texto a la tabla jmp y crear un mapa de obleaBusque mapas de obleas en el complemento jmp y en discusiones anteriores. Muchas respuestas ahí