cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Try the Materials Informatics Toolkit, which is designed to easily handle SMILES data. This and other helpful add-ins are available in the JMP® Marketplace
Choose Language Hide Translation Bar
Jackie_
Level VI

Row selection

 

Hello JMP community,

@jthi 

A little challenging problem - I'm trying to write a code in jsl that can apply an exclusion to So basically, I want to select

 

 

 

Appreciate your help and suggestion.

 

BR,

Jack

3 ACCEPTED SOLUTIONS

Accepted Solutions

Re: Highlight the 3 dies from the edge of the wafer map

This might be an iterative process. it is also tough, in a pixellated environment like this, to strictly define "3 from the edge".

 

You can get pretty close by using an ellipse to select.

1) find center x and center y

2) using eccentricity as needed, perturb a circle to get an ellipse parallel to the wafer edge.

3) choose a "radius" (dubious term here, I know) that selects the points you want.

4) use a formula column to flag points of interest.

 

Below are screenshots and a script to run against your data table

 

brady_brady_0-1677774523483.png

 

brady_brady_1-1677774575977.png

 

Names Default To Here(1);
dt = current data table();

dt << new column ("Cx",  Formula( 	(Col Max( :X coord ) + Col Min( :X coord ) ) / 2 ) );
dt << new column ("Cy",  Formula( 	(Col Max( :Y coord ) + Col Min( :Y coord ) ) / 2 ) );
dt << new column ("To Select", Formula( Root( Power( :X coord - :Cx ) * 0.57 + Power( :Y coord - :Cy ) ) > 100 ) );
dt << Select Where(:To Select == 1 );
dt << Run Script ("Wafer Map");

View solution in original post

Re: Highlight the 3 dies from the edge of the wafer map

You're welcome. You can also do this with a rank-based approach, selecting the top and bottom 3 xs for a given y, and conversely.

 

That selection looks like this:

brady_brady_0-1677776018250.png

 

I've attached a table with columns supporting both approaches.

 

Cheers,

Brady

 

View solution in original post

Re: Highlight the 3 dies from the edge of the wafer map

In that case, you would change the "select" formula  (from my first example, where I used the formula of an ellipse) to this:

 

Abs( :X coord - Round( :Cx ) ) <= 1 & Abs( :Y coord - Round( :Cy ) ) <= 1

The reason I say to use the ellipse example is that unlike with the rank-based example, center x and center y must be determined. Once you've done that, you're looking for a difference of -1, 0 or 1 from the rounded value of center x, and a difference of -1, 0 or 1 from the rounded value of center y.

 

In general, for an NxN square, you'd need the formula to look as above, but with (N-1)/2 substituted in each place where I have the value "1" in the formula above.

 

EDIT: actually, that is for an NxN square when N is odd. If N is even, you would need to do a bit more work.

a) if Cx or Cy turn out to be integers, you'd have to decide whether you want to grab more dice left of (analogously, below) center, or more dice right of (analogously, above) center, then move slightly off center and capture N/2 dice on each side of this. When Cx or Cy is not an integer, you can just capture N/2 dice on each side of Cx or Cy, respectively.

brady_brady_0-1678206401334.png

 

View solution in original post

6 REPLIES 6

Re: Highlight the 3 dies from the edge of the wafer map

This might be an iterative process. it is also tough, in a pixellated environment like this, to strictly define "3 from the edge".

 

You can get pretty close by using an ellipse to select.

1) find center x and center y

2) using eccentricity as needed, perturb a circle to get an ellipse parallel to the wafer edge.

3) choose a "radius" (dubious term here, I know) that selects the points you want.

4) use a formula column to flag points of interest.

 

Below are screenshots and a script to run against your data table

 

brady_brady_0-1677774523483.png

 

brady_brady_1-1677774575977.png

 

Names Default To Here(1);
dt = current data table();

dt << new column ("Cx",  Formula( 	(Col Max( :X coord ) + Col Min( :X coord ) ) / 2 ) );
dt << new column ("Cy",  Formula( 	(Col Max( :Y coord ) + Col Min( :Y coord ) ) / 2 ) );
dt << new column ("To Select", Formula( Root( Power( :X coord - :Cx ) * 0.57 + Power( :Y coord - :Cy ) ) > 100 ) );
dt << Select Where(:To Select == 1 );
dt << Run Script ("Wafer Map");

Jackie_
Level VI

Re: Highlight the 3 dies from the edge of the wafer map

Thanks Brady

Re: Highlight the 3 dies from the edge of the wafer map

You're welcome. You can also do this with a rank-based approach, selecting the top and bottom 3 xs for a given y, and conversely.

 

That selection looks like this:

brady_brady_0-1677776018250.png

 

I've attached a table with columns supporting both approaches.

 

Cheers,

Brady

 

Jackie_
Level VI

Re: Highlight the 3 dies from the edge of the wafer map

Thanks a lot brady!

Jackie_
Level VI

Re: Highlight the 3 dies from the edge of the wafer map

@brady_brady 

Quick Question brady - What if I want to select a square matrix of 3 x 3 from the center of the wafer map?

 

 

Names Default To Here( 1 );
dt = Current Data Table();


Try( dt << Delete Columns( "RevX", "RevY", "RankX", "RankY", "Select" ) );

Try( dt << Delete Table Variable( "Par" ) );
Par = 135;



dt << New Table Variable( "Par", 4 );
dt << New Column( "RevX", Formula( (Col Number( :X coord, :Y coord ) - Col Rank( :X coord, :Y coord )) + 1 < Par ) );
dt << New Column( "RevY", Formula( (Col Number( :Y coord, :X coord ) - Col Rank( :Y coord, :X coord )) + 1 < Par ) );

dt << New Column( "RankX", Formula( Col Rank( :X coord, :Y coord ) < Par ) );
dt << New Column( "RankY", Formula( Col Rank( :Y coord, :X coord ) < Par ) );
dt << New Column( "Select", Formula( :RevX + :RevY + :RankX + :RankY > 0 ) );
dt << Select Where( :Select == 1 );

New Window( "",
	H List Box(

		Outline Box( "Control",
			tb = Text Edit Box( 3 ),
			Button Box( "Set",
				val = Num( tb << get text ) + 1;
				dt << Set Table Variable( "Par", val );
				dt << Select Where( :Select == 1 );
			)
/*	sb=	Slider Box( 0.001, 1, p,
			dt:Par = p;
			dt << Select Where(:To Select == 1 );
			tb << Set text( p )
		)*/
		), 

		Graph Builder(
			Size( 534, 456 ),
			Show Control Panel( 0 ),
			Variables( X( :X coord ), Y( :Y coord ) ),
			Elements( Points( X, Y, Legend( 3 ) ) )
		)
	)
	
);

Re: Highlight the 3 dies from the edge of the wafer map

In that case, you would change the "select" formula  (from my first example, where I used the formula of an ellipse) to this:

 

Abs( :X coord - Round( :Cx ) ) <= 1 & Abs( :Y coord - Round( :Cy ) ) <= 1

The reason I say to use the ellipse example is that unlike with the rank-based example, center x and center y must be determined. Once you've done that, you're looking for a difference of -1, 0 or 1 from the rounded value of center x, and a difference of -1, 0 or 1 from the rounded value of center y.

 

In general, for an NxN square, you'd need the formula to look as above, but with (N-1)/2 substituted in each place where I have the value "1" in the formula above.

 

EDIT: actually, that is for an NxN square when N is odd. If N is even, you would need to do a bit more work.

a) if Cx or Cy turn out to be integers, you'd have to decide whether you want to grab more dice left of (analogously, below) center, or more dice right of (analogously, above) center, then move slightly off center and capture N/2 dice on each side of this. When Cx or Cy is not an integer, you can just capture N/2 dice on each side of Cx or Cy, respectively.

brady_brady_0-1678206401334.png