turn on suggestions

Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Showing results for

- JMP User Community
- :
- Discussions
- :
- Discussions
- :
- JSL Script

Topic Options

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Get Direct Link
- Email to a Friend
- Report Inappropriate Content

Sep 9, 2009 9:19 AM
(1632 views)

I am new to JMP script.

I wrote two simple scripts to run my table. One is to add one column and do a calculation. The other is to plot the graph to "Fit Y by X".

If I run the two scripts seperately, both work.

If I combine the two into one script, JSL only run the first part of adding column and doing the calculation, but does not plot the graph?

Can anyone tell me why?

Thanks a lot for help. I appreciate it.

HL

I wrote two simple scripts to run my table. One is to add one column and do a calculation. The other is to plot the graph to "Fit Y by X".

If I run the two scripts seperately, both work.

If I combine the two into one script, JSL only run the first part of adding column and doing the calculation, but does not plot the graph?

Can anyone tell me why?

Thanks a lot for help. I appreciate it.

HL

9 REPLIES

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Get Direct Link
- Email to a Friend
- Report Inappropriate Content

Post your script. I'll take a look at it. Look out for Less than and greater than signs though, they will mess up the post.

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Get Direct Link
- Email to a Friend
- Report Inappropriate Content

I don't know why I cannot post all my script here. It always truncate the script.

Message was edited by: HL

Message was edited by: HL

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Get Direct Link
- Email to a Friend
- Report Inappropriate Content

caption="please open the file";

dt=open();

NewColumn("Module");

NewColumn("Test");

NewColumn("Vg(V)",Numeric,Continuous);

NewColumn("Gm",Numeric,Continuous);

ColA=Column("Module");

ColB=column("Parameter");

ColC=column("Test");

ColD=column("Vg(v)");

colE=column("Gm");

for(i=1,i<5000,i++,

colA*=left(colB**,3);*

colC*=right(colB**,7);*

colD*=minus(Num(munger(colB**,19,3))));*

dt=open();

NewColumn("Module");

NewColumn("Test");

NewColumn("Vg(V)",Numeric,Continuous);

NewColumn("Gm",Numeric,Continuous);

ColA=Column("Module");

ColB=column("Parameter");

ColC=column("Test");

ColD=column("Vg(v)");

colE=column("Gm");

for(i=1,i<5000,i++,

colA

colC

colD

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Get Direct Link
- Email to a Friend
- Report Inappropriate Content

Bivariate(

Y( :actualValue,Gm ),

X( :Name( "Vg(V)") ),

//Fit Each Value( {Line Color( "Red" )} ),

//By( :Wafer, :Module, :X, :Y )

);

Y( :actualValue,Gm ),

X( :Name( "Vg(V)") ),

//Fit Each Value( {Line Color( "Red" )} ),

//By( :Wafer, :Module, :X, :Y )

);

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Get Direct Link
- Email to a Friend
- Report Inappropriate Content

The above two scripts run well separately. But when I combine them together, it only run the 1st one.

Or should I include a fuinction to combine the two scripts into one in order to run them together?

I appreciate your help.

Or should I include a fuinction to combine the two scripts into one in order to run them together?

I appreciate your help.

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Get Direct Link
- Email to a Friend
- Report Inappropriate Content

So I think your first script was cut off at colA = ]]]] but I think I get the idea.

Put the script that creates the Data Table before the Bivariate script, so it uses that Data Table.

To create the Bivariate graph you need to put it into a Window. To do this use this sytax:

wind = New Window( "Bivariate", Bivariate(

Y( :actualValue,Gm ),

X( :Name( "Vg(V)") ),

//Fit Each Value( {Line Color( "Red" )} ),

//By( :Wafer, :Module, :X, :Y )

);

);

Then you can do different things with the wind variable like save it, close it, pull different data, or nothing.

Hope this Helps

Put the script that creates the Data Table before the Bivariate script, so it uses that Data Table.

To create the Bivariate graph you need to put it into a Window. To do this use this sytax:

wind = New Window( "Bivariate", Bivariate(

Y( :actualValue,Gm ),

X( :Name( "Vg(V)") ),

//Fit Each Value( {Line Color( "Red" )} ),

//By( :Wafer, :Module, :X, :Y )

);

);

Then you can do different things with the wind variable like save it, close it, pull different data, or nothing.

Hope this Helps

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Get Direct Link
- Email to a Friend
- Report Inappropriate Content

Thanks for your quick reply.

I copy your script to my 1st script and run the script. It still run the data table calculation only but did not plot the graph.

I run your script separately and it did work.

I really don't know why JSL cannot run them in one script.

BTW, the first script is to open an excel sheet and add some columns and then did the column calculation.

Thanks.

I copy your script to my 1st script and run the script. It still run the data table calculation only but did not plot the graph.

I run your script separately and it did work.

I really don't know why JSL cannot run them in one script.

BTW, the first script is to open an excel sheet and add some columns and then did the column calculation.

Thanks.

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Get Direct Link
- Email to a Friend
- Report Inappropriate Content

I'm not sure if this is your problem, because I can't see the whole script, but

if you create a column with a formula in it then you need to add the command

dt << run formulas;

where dt refers to your data table, before you do any analyses. The problem is that the formula is evaluated in the background and the next platform executes before the column has finished evaluating. When I have scritps that run one part at a time but fail as a whole script most of the time it is due to this run formula issue. The other problem I encounter is that the wrong data table is current, so an explicit

current data table(dt);

is sometimes required.

Hope that helps.

Cheers

Gunter

if you create a column with a formula in it then you need to add the command

dt << run formulas;

where dt refers to your data table, before you do any analyses. The problem is that the formula is evaluated in the background and the next platform executes before the column has finished evaluating. When I have scritps that run one part at a time but fail as a whole script most of the time it is due to this run formula issue. The other problem I encounter is that the wrong data table is current, so an explicit

current data table(dt);

is sometimes required.

Hope that helps.

Cheers

Gunter

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Get Direct Link
- Email to a Friend
- Report Inappropriate Content

I'm attaching below a simple script that does the kind of thing you are trying to do. It works for me in 8.0.1. Assuming you can get it to run, then try to modify it step by step until it is the exact script you want.

Michael

dt = New Table( "My Table", New Column( "A" ), New Column( "B" ) );

colA = Column( "A" );

colB = Column( "B" );

dt << addrows( 5 );

For( i = 1, i < 6, i++,

colA(i) = Random Normal();

colB(i) = Random Normal();

);

dt << Bivariate( X( "A" ), Y( "B" ) );

NOTE: In the For loop, you MUST replace the round brackets in colA(i) and colB(i) with square brackets for correct syntax. I just cannot do that in the code here because it gets truncated as you have already seen.

Michael

dt = New Table( "My Table", New Column( "A" ), New Column( "B" ) );

colA = Column( "A" );

colB = Column( "B" );

dt << addrows( 5 );

For( i = 1, i < 6, i++,

colA(i) = Random Normal();

colB(i) = Random Normal();

);

dt << Bivariate( X( "A" ), Y( "B" ) );

NOTE: In the For loop, you MUST replace the round brackets in colA(i) and colB(i) with square brackets for correct syntax. I just cannot do that in the code here because it gets truncated as you have already seen.