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

How to dynamically update process screening or other objects.

Hello again JMP community,

 

Thanks a lot for taking your time and answer my previous question. The code that I run below (JMP pro 17.2) doesn't seem to work as intended. My goal is after I press the Redo button, the Process Screening changes from grouping by "lot_id" to grouping by "wafer".

 

I guess that once I declare the PS variable it keeps all the initial settings and it is not possible to dynammically update it as I could not find any "<< " command that would update the Grouping variable. Is there a simple solution for this example:

 

Cols = {"NPN1", "PNP1", "PNP2", "NPN2"};
GR = "lot_id";
dt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );

PLAT = Platform(
	dt,
	PS = Process Screening(
		Y( Eval( Cols ) ),
		Grouping( Eval( GR ) ),
		Control Chart Type( "Indiv and MR" ),
		Minimum Process Length( 1 ),
		Use Medians instead of Means( 1 ),
		Show tests( 0 ),
		Test 1( 0 ),
		Cp( 1 ),
		Spec Limits( 1 ), 
	), 
);

Redo= Expr(
			GR = "wafer";
			
			NW << Close Window;
			PS << Redo Analysis;
			Make_Win();
);

Make_Win = Expr(
	NW = New Window( "ProcessScreening",
		Vlist_box = V List Box( 
		PLAT, 
		BB = Button Box( "Redo", Redo ),
		),
	),
);

Make_Win();

 

Best regards,

NJS.

 

1 ACCEPTED SOLUTION

Accepted Solutions
jthi
Super User

Re: How to dynamically update process screening or other objects.

This might give some ideas what you could do

Names Default To Here(1);

Cols = {"NPN1", "PNP1", "PNP2", "NPN2"};
GR = "lot_id";

dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");

ps = Expr(dt << Process Screening(
	Y(Eval(Cols)),
	Grouping(Eval(GR)),
	Control Chart Type("Indiv and MR"),
	Minimum Process Length(1),
	Use Medians instead of Means(1),
	Show tests(0),
	Test 1(0),
	Cp(1),
	Spec Limits(1)
));


redo_ps = Expr(
	If(GR == "lot_id",
		GR = "wafer";
	,
		GR = "lot_id";
	);
	
	ps_collector << Delete Box();
	vlb << Append(ps_collector = V List Box(ps));
);

nw = New Window("ProcessScreening", 
	V List Box(
		vlb = V List Box(
			ps_collector = V List Box(ps)
		),
		BB = Button Box("Redo", redo_ps);
	)
);
-Jarmo

View solution in original post

1 REPLY 1
jthi
Super User

Re: How to dynamically update process screening or other objects.

This might give some ideas what you could do

Names Default To Here(1);

Cols = {"NPN1", "PNP1", "PNP2", "NPN2"};
GR = "lot_id";

dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");

ps = Expr(dt << Process Screening(
	Y(Eval(Cols)),
	Grouping(Eval(GR)),
	Control Chart Type("Indiv and MR"),
	Minimum Process Length(1),
	Use Medians instead of Means(1),
	Show tests(0),
	Test 1(0),
	Cp(1),
	Spec Limits(1)
));


redo_ps = Expr(
	If(GR == "lot_id",
		GR = "wafer";
	,
		GR = "lot_id";
	);
	
	ps_collector << Delete Box();
	vlb << Append(ps_collector = V List Box(ps));
);

nw = New Window("ProcessScreening", 
	V List Box(
		vlb = V List Box(
			ps_collector = V List Box(ps)
		),
		BB = Button Box("Redo", redo_ps);
	)
);
-Jarmo