cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Browse apps to extend the software in the new JMP Marketplace
Choose Language Hide Translation Bar
bharathu
Level III

How to add reference lines from a reference line table into a control charts or variability charts?

Hello,

 

I am trying to create a table that holds the reference lines for each model. Each reference line is the yield expectation for each model. I intend to have a script that can import the reference lines from the central table and plot the reference line on the control charts or the variability charts when trending yields of each model. 

Here is a my dummy data for the yield table

ModelWaferIDYield
IC1A50
IC1B60
IC1C70
IC2E30
IC2F40
IC2G50
IC2H60
IC3R80
IC3S90
IC3T70
IC3Z65

 

Here is my dummy reference line table that needs to be imported into the control charts

ModelReference line for Yield expectation
IC150
IC245
IC370

 

The control chart or the variablility chart I am trying to plot has "Yield" in y axis & "WaferID" as the x-axis. Hence I cannot use the "column property" function in the "Yield" column to set the reference lines. I have more than 60 ICs to look at and I looking fdor some help where it could be automated than manually entered. Here is a sample snap shot of what I am trying to achieve. Any help would be greatly appreciated.

Sample control chart.JPG

1 ACCEPTED SOLUTION

Accepted Solutions
ian_jmp
Level X

Re: How to add reference lines from a reference line table into a control charts or variability char

The code below will produce:

Screen Shot 2017-11-23 at 12.00.12.png

and should get you started. You can use 'Help > Books > Scripting Guide' and 'Help  > Scripting Index' to figure out what it's doing. Note that using the titles of the outline nodes is not currently very robust, but this could be improved, or done differently.

NamesDefaultToHere(1);

// Yield table
dt1 = 
New Table( "Yield",
	Add Rows( 11 ),
	New Column( "Model",
		Character,
		"Nominal",
		Set Values(
			{"IC1", "IC1", "IC1", "IC2", "IC2", "IC2", "IC2", "IC3", "IC3", "IC3",
			"IC3"}
		)
	),
	New Column( "WaferID",
		Character( 16 ),
		"Nominal",
		Set Values( {"A", "B", "C", "E", "F", "G", "H", "R", "S", "T", "Z"} )
	),
	New Column( "Yield",
		Numeric,
		"Nominal",
		Format( "Best", 12 ),
		Set Values( [50, 60, 70, 30, 40, 50, 60, 80, 90, 70, 65] )
	)
);

// Reference table
dt2 = 
New Table( "Reference",
	Add Rows( 3 ),
	New Column( "Model", Character, "Nominal", Set Values( {"IC1", "IC2", "IC3"} ) ),
	New Column( "Value",
		Numeric,
		"Nominal",
		Format( "Best", 12 ),
		Set Values( [50, 40, 70] )
	)
);

// Start here . . .
// Get the values in dt2 into lists for later
modelVal = Column(dt2, "Model") << getValues;
refVal = Column(dt2, "Value") << getValues;

// Control Charts
cc = dt1 << Control Chart(
						Sample Label( :WaferID ),
						Chart Col( :Yield, Individual Measurement ),
						By( :Model )
					);

// Loop over the control chart reports
for(r=1, r<=NItems(cc), r++,
	ccRep = Report(cc[r]);
	// Extract the level of 'Model' from the title of the outline node
	title = ccRep[OutlineBox(1)] << getTitle;
	delimPos = Munger(title, 1, "=");
	level = Substr(title, delimPos+1, Length(title)-delimPos);
	// Get the reference value and plot it using a graphics script
	ref = refVal[Loc(modelVal, level)];
	Eval(
		Substitute(
				Expr(ccRep[FrameBox(1)] << addGraphicsScript(PenColor("Blue"); HLine(TBD))),
				Expr(TBD),
				ref[1]
				);
			);
	);

View solution in original post

5 REPLIES 5
ian_jmp
Level X

Re: How to add reference lines from a reference line table into a control charts or variability char

The code below will produce:

Screen Shot 2017-11-23 at 12.00.12.png

and should get you started. You can use 'Help > Books > Scripting Guide' and 'Help  > Scripting Index' to figure out what it's doing. Note that using the titles of the outline nodes is not currently very robust, but this could be improved, or done differently.

NamesDefaultToHere(1);

// Yield table
dt1 = 
New Table( "Yield",
	Add Rows( 11 ),
	New Column( "Model",
		Character,
		"Nominal",
		Set Values(
			{"IC1", "IC1", "IC1", "IC2", "IC2", "IC2", "IC2", "IC3", "IC3", "IC3",
			"IC3"}
		)
	),
	New Column( "WaferID",
		Character( 16 ),
		"Nominal",
		Set Values( {"A", "B", "C", "E", "F", "G", "H", "R", "S", "T", "Z"} )
	),
	New Column( "Yield",
		Numeric,
		"Nominal",
		Format( "Best", 12 ),
		Set Values( [50, 60, 70, 30, 40, 50, 60, 80, 90, 70, 65] )
	)
);

// Reference table
dt2 = 
New Table( "Reference",
	Add Rows( 3 ),
	New Column( "Model", Character, "Nominal", Set Values( {"IC1", "IC2", "IC3"} ) ),
	New Column( "Value",
		Numeric,
		"Nominal",
		Format( "Best", 12 ),
		Set Values( [50, 40, 70] )
	)
);

// Start here . . .
// Get the values in dt2 into lists for later
modelVal = Column(dt2, "Model") << getValues;
refVal = Column(dt2, "Value") << getValues;

// Control Charts
cc = dt1 << Control Chart(
						Sample Label( :WaferID ),
						Chart Col( :Yield, Individual Measurement ),
						By( :Model )
					);

// Loop over the control chart reports
for(r=1, r<=NItems(cc), r++,
	ccRep = Report(cc[r]);
	// Extract the level of 'Model' from the title of the outline node
	title = ccRep[OutlineBox(1)] << getTitle;
	delimPos = Munger(title, 1, "=");
	level = Substr(title, delimPos+1, Length(title)-delimPos);
	// Get the reference value and plot it using a graphics script
	ref = refVal[Loc(modelVal, level)];
	Eval(
		Substitute(
				Expr(ccRep[FrameBox(1)] << addGraphicsScript(PenColor("Blue"); HLine(TBD))),
				Expr(TBD),
				ref[1]
				);
			);
	);
bharathu
Level III

Re: How to add reference lines from a reference line table into a control charts or variability char

Thank you so much Ian. This works great.

GoodMan
Level III

Re: How to add reference lines from a reference line table into a control charts or variability char

I tested this JSL on my Chinese JMP11. Get the following report in log. Still i can not draw reference line. Can you explain for me? 

 

GMan

ian_jmp
Level X

Re: How to add reference lines from a reference line table into a control charts or variability char

Loaclising JSL into the different languages that JMP supports is perfectly possible, but takes a certain extra effort. For some details on how this can be done, see the Discovery paper by @hecht_jmp. For example, if you are working with outline nodes (as in the code above), and you reference them by name, this will almost certainly fail. On the other hand, referencing by number (as in the code above), may fail if the the structure of the report changes (for example, if the contents of the report are made richer between releases).

Probably it's best to send an email to support@jmp.com and point them to this thread.

markschahl
Level V

Re: How to add reference lines from a reference line table into a control charts or variability char

I took a different route. I split the Yield column by Model to create a separate column per Model. Then using Column Properties > Spec Limits > Target, entered the expected values (which are essentially targets, no?). See attached file.