텍스트 파일에서 jmp 테이블로 x 및 y 값 가져오기안녕,
텍스트 파일의 각 줄을 읽고 각 문자열을 jmp 데이터 테이블의 별도 행으로 가져옵니다.
고급 통계 모델링데이터 접근대량 맞춤화Re: 텍스트 파일에서 jmp 테이블로 x 및 y 값을 가져오고 웨이퍼 맵을 생성합니다.Jarmo님, 감사합니다.
Re: 텍스트 파일에서 jmp 테이블로 x 및 y 값을 가져오고 웨이퍼 맵을 생성합니다.다음은 연관 배열을 사용하여 웨이퍼에 대한 정보를 저장하고 텍스트 파일에서 jmp 테이블을 작성하는 완전한 예입니다.
더보기...
또한 "."일 때 JMP가 값 레이블과 함께 올바르게 작동하지 않는 것 같다는 점도 알아차렸습니다. 라벨이 붙은 값 중 하나입니다. 시간이 나면 버그로 신고하겠습니다.
더보기...
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"})
)
);
이름의 기본값은 여기에 있습니다(1); dt = New Table("제목 없음", 행 추가(4), New Column("열 1", 문자, "명목", 값 레이블({"." = "MISSING", "A" = "AAA", " B" = "BBB", "C" = "CCC"}), 값 레이블 사용(1), 선택 항목 설정, 값 설정({"A", "B", ".", "C"}) ) ) ;
Re: 텍스트 파일에서 jmp 테이블로 x 및 y 값을 가져오고 웨이퍼 맵을 생성합니다.다시 한 번, 스크립팅 인덱스와 jmp 도움말을 사용하도록 상기시켜 드립니다. 일반적으로 이러한 유형의 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: 텍스트 파일에서 jmp 테이블로 x 및 y 값을 가져오고 웨이퍼 맵을 생성합니다.Jamo님, 감사합니다. @jthi 내가 무엇을 놓쳤는지 알려줘서. 나는 내가 가까이 있다는 것을 알고 있었다. 제가 참조할 수 있도록 예제 코드를 공유해 주실 수 있나요? 나는 아직도 현악기 연주법을 배우고 있다
Re: 텍스트 파일에서 jmp 테이블로 x 및 y 값을 가져오고 웨이퍼 맵을 생성합니다.다른 정보도 원하시면 방법을 바꾸겠습니다. 파일의 데이터에는 각 줄(wafermap 제외)에 새 데이터가 있으므로 Words()를 사용하고 행 변경 시 분할합니다(Words()가 생성하는 목록에서 Contains를 사용하여 Wafermap이 시작되는 시점을 계속 찾을 수 있지만 문자열이 아닌 목록의 인덱스입니다). 그런 다음 더 쉽게 액세스할 수 있도록 연관 배열에 정보를 추가합니다(일부 루핑과 더 많은 Words() 사용이 필요함).
Re: 텍스트 파일에서 jmp 테이블로 x 및 y 값을 가져오고 웨이퍼 맵을 생성합니다.당신이 잘 지내길 바랍니다 @jthi ,!
이 토론에 대한 정말 빠른 질문-
또한 헤더 정보를 포함하여 jmp 데이터 테이블의 txt 파일에서 모든 문자열을 가져오고 싶습니다. 최종 데이터 테이블에는 모든 문자열이 포함되어야 하며 각 문자는 별도의 단어로 처리되어야 합니다. 다음과 같아야합니다.

제안한 논리는 행 13 이후에는 작동하지 않습니다. 어떤 도움이라도 주시면 감사하겠습니다.
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, "" );
)
);시간 내 줘서 고마워!
Re: 텍스트 파일에서 jmp 테이블로 x 및 y 값을 가져오고 웨이퍼 맵을 생성합니다.Contains를 사용하여 처음 "MAP = {"를 건너뛰거나 끝부터 검색할 수 있습니다(스크립팅 인덱스 읽기...).

Re: 텍스트 파일에서 jmp 테이블로 x 및 y 값을 가져오고 웨이퍼 맵을 생성합니다.@jthi
"를 포함하는 두 개의 문자열이 있습니다. MAP = {"가 아래에 강조표시됨:

첫 번째 항목을 선택하지 않기 위해 & 문을 사용해 보았지만 작동하지 않습니다.
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: 텍스트 파일에서 jmp 테이블로 x 및 y 값을 가져오고 웨이퍼 맵을 생성합니다."MAP = {"를 사용하여 포함을 시도할 수 있습니다. 그러면 문자열에서 "MAP = {"의 위치가 제공되고 Substr과 함께 해당 지식을 사용하여 원하는 것을 얻을 수 있습니다. 또한 Substr(및 기타 기능)의 작동 방식을 이해하려면 스크립팅 인덱스(그리고 스크립팅 인덱스에서 열 수 있는 JMP 도움말도 가능)를 확인하세요.
Re: 텍스트 파일에서 jmp 테이블로 x 및 y 값을 가져오고 웨이퍼 맵을 생성합니다."MAP = {"를 사용하여 포함을 시도할 수 있습니다. 이렇게 하면 문자열에서 "MAP = {"의 위치를 제공한 다음 Substr과 함께 해당 지식을 사용하여 원하는 것을 얻을 수 있습니다.
Re: 텍스트 파일에서 jmp 테이블로 x 및 y 값을 가져오고 웨이퍼 맵을 생성합니다.@txnelson ,
첫 번째 행의 패턴이 포함 문과 일치하면 접근 방식이 작동합니다. 동일한 패턴을 가지지 않는 웨이퍼 맵이 여러 개 있습니다. 유일한 유사점은 웨이퍼 패턴이 텍스트 파일의 행 번호 21에서 시작된다는 것입니다. 스크립트가 읽기 시작하는 행 번호를 정의하는 방법이 있습니까?. 참고용으로 웨이퍼 맵 텍스트 파일을 첨부했습니다(노트패드에서 더 잘 보입니다++)
Re: 텍스트 파일에서 jmp 테이블로 x 및 y 값을 가져오고 웨이퍼 맵을 생성합니다.map_str = Substr(
demo_str,
Contains( demo_str, ".X." ),
Length( demo_str ) - Contains( demo_str, ".X." ) -1
);
참고: Stbstr() 함수에 대한 정의와 예는 스크립팅 색인을 참조하세요.
Re: 텍스트 파일에서 jmp 테이블로 x 및 y 값을 가져오고 웨이퍼 맵을 생성합니다.좋은 설명이네요 @jthi .
빠른 질문:
아래 명령문은 목록의 두 번째 행부터 데이터 읽기를 시작합니다. 중괄호 "}"가 포함된 마지막 행을 읽고 싶지 않습니다.
스크립트에서 끝 줄을 어떻게 정의할 수 있나요?
map_str = Substr(demo_str, Contains(demo_str, ".X."));
Re: 텍스트 파일에서 jmp 테이블로 x 및 y 값을 가져오고 웨이퍼 맵을 생성합니다.텍스트 파일의 웨이퍼맵 부분만 포함하는 문자열로 끝나는 방식으로 Load Text File()에서 가져온 문자열을 조작해야 합니다. 이것은 필요한 최종 문자열을 제공하지는 않지만 무엇을 할 수 있는지에 대한 아이디어를 제공합니다. Substr 및 Contains 작동 방식은 스크립팅 인덱스(및 JMP 도움말)를 참조하세요. 또한 단어 및 포함 사용에 대한 하나의 옵션이 있으며 올바른 목록을 얻으려면 일부 수정이 필요합니다.
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: 텍스트 파일에서 jmp 테이블로 x 및 y 값을 가져오고 웨이퍼 맵을 생성합니다.다시 귀찮게해서 미안해. substr을 시도했지만 코드에 잘못된 내용이 있습니다. 수정해주시면 정말 좋을 것 같아요
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: 텍스트 파일에서 jmp 테이블로 x 및 y 값을 가져오고 웨이퍼 맵을 생성합니다.웨이퍼맵만 얻으려면 몇 가지 방법을 사용해야 합니다(관심 있는 경우). 현재 전체 텍스트 파일을 사용하고 있습니다. 이에 대한 몇 가지 옵션은 다음과 같습니다.
- 정규식
- 포함된 하위 문자열
- {}의 단어 및 분할
- 행 변경 시 단어 및 분할을 포함하고 이를 결합하여
- 라인을 하드 코딩하고 이를 기반으로 웨이퍼맵을 얻는 것(보통 매우 나쁜 생각)
Re: 텍스트 파일에서 jmp 테이블로 x 및 y 값을 가져오고 웨이퍼 맵을 생성합니다.@jthi
간단한 질문입니다
실제 텍스트 파일에는 처음에 웨이퍼 정보가 포함되어 있습니다. 21행의 데이터를 저장하고 싶습니다. jsl을 아래와 같이 수정했습니다. 예상대로 읽혀요. 어떤 제안이 있으십니까?

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: 텍스트 파일에서 jmp 테이블로 x 및 y 값을 가져오고 웨이퍼 맵을 생성합니다.걸작입니다. 매우 감사합니다! :웃는_얼굴:
Re: 텍스트 파일에서 jmp 테이블로 x 및 y 값을 가져오고 웨이퍼 맵을 생성합니다.더 간단한 테이블 사용
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: 텍스트 파일에서 jmp 테이블로 x 및 y 값을 가져오고 웨이퍼 맵을 생성합니다.감사합니다 @jthi
저는 JSL 코딩을 처음 접했습니다. 예시를 공유해 주실 수 있나요? 그냥 참고사항으로
Re: 텍스트 파일에서 jmp 테이블로 x 및 y 값을 가져오고 웨이퍼 맵을 생성합니다.빈 문자열을 초기화하고, 테이블 Y 값을 순서대로 반복하고, 현재 y에 대한 행 번호를 가져오고, 해당 행 번호를 사용하여 bin을 가져오고, 해당 bin을 초기화된 문자열에 추가하고(Concat Items()가 도움이 될 것입니다), 행 변경 사항을 추가하고 계속합니다. 다음 Y로 반복 후 필요한 경우 공백을 자릅니다.
Re: 텍스트 파일에서 jmp 테이블로 x 및 y 값을 가져오고 웨이퍼 맵을 생성합니다.그것은 매력처럼 작동합니다. 정말 감사합니다 @jthi ,
텍스트 파일의 단어를 jmp 데이터 테이블로 가져온 다음 jmp 테이블의 해당 저장소에 다른 문자를 할당한 다음 원래 형식을 사용하여 텍스트 파일로 다시 변환하려고 합니다.
map_str =
".....GGG.....
....BGGGG....
...BGGGGGG...
..GGGGGGGGG..
.GGGGGGBBGGG.
GGGGGGGBBGGGB
GGGGGGGGGGGGB
GGGGGGGGGGGGB
.GGGGGGGGGGG.
..GGGGGGGGG..
...GGGGGGG...
....GGGGG....
.....GGG.....";
데이터 테이블 X , Y 및 bin을 서식이 유지된 텍스트 파일 형식으로 다시 변환하려면 어떻게 해야 합니까? 어떠한 제안?
Re: 텍스트 파일에서 jmp 테이블로 x 및 y 값을 가져오고 웨이퍼 맵을 생성합니다.제가 사용하는 코드를 공유할 수는 없지만 여기에 몇 가지 아이디어가 포함된 간단한 예가 있습니다.
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: 텍스트 파일에서 jmp 테이블로 x 및 y 값을 가져오고 웨이퍼 맵을 생성합니다.@jthi
첨부된 텍스트 파일의 jmp 데이터 테이블 열 X 및 Y에 다이 위치와 문자를 저장하고 싶습니다. 시간 이제 JSL을 사용하여 txt 파일을 표 형식 데이터로 처리해야 합니까?

JMP 테이블:

Re: 텍스트 파일에서 jmp 테이블로 x 및 y 값을 가져오고 웨이퍼 맵을 생성합니다.감사해요 @jthi
제가 참조할 수 있도록 코드를 공유해 주시겠습니까?
감사해요,
잭
Re: 텍스트 파일에서 jmp 테이블로 x 및 y 값을 가져오고 웨이퍼 맵을 생성합니다.저는 JMP를 사용하여 몇 가지 다른 종류의 웨이퍼 맵을 텍스트 파일을 기반으로 하는 XY 좌표(및 맵 파일)로 포맷했습니다. "수동" 스크립팅을 통해 수행하는 과정은 다음과 같았습니다.
- 텍스트 파일을 구문 분석하고 중요한 정보를 얻습니다(정규식, 단어 및 기타 문자 기능이 여기에서 도움이 됩니다).
- 행 개수, 열 개수
- X 사이즈, Y 사이즈
- Bin 유형(특히 null/empty 유형)
- 웨이퍼맵
- 기타 정보(WAFER ID, 유형...)
- 결과를 수집할 수 있는 새 데이터 테이블을 만듭니다.
- 행 개수는 행 개수 * 열 개수일 가능성이 높습니다.
- 최소한 X 및 Y 열이 필요하며, 다른 저장소에 관심이 있는 경우 해당 열도 추가하세요.
- Words(wafermap_txt, "\!N")를 사용하여 웨이퍼맵 문자열을 반복하여 각 줄을 가져오고 채우는 열에 따라 xsize/ysize를 곱하여 값을 만듭니다.
- 너비와 높이에 신경 쓰지 않고 1/고정 값만 사용하면 이 단계가 훨씬 쉽습니다.
- 또한 JMP 맵 파일에 필요한 좌표로 코딩하는 것도 좋은 생각일 수 있습니다. 이렇게 하면 크기를 사용하여 맵 모양 파일을 만들 수 있습니다.
- 웨이퍼 맵에만 관심이 있는 경우 널 빈을 생략할 수 있지만 맵을 구축할 때 이를 고려해야 합니다.
Re: 텍스트 파일에서 jmp 테이블로 x 및 y 값을 가져오고 웨이퍼 맵을 생성합니다.jmp 추가 기능과 웨이퍼맵에 대한 과거 토론을 검색하세요. 거기에 많은 답변이 있습니다