Choose Language Hide Translation Bar
Highlighted
AmanS
Level II

Running JSL in background without any windows popping up

Hello,

New JSL user here. I have a nested for loop where I am using a bivariate platform to extract Rsq for each pair and creating a concatenated data table which will eventually hold all Rsq values for all pairs. I am able to get the desired output in the end. However, while the script is running, I get temp tables to pop up and I cannot seem to make them invisible or close (post contenation to another table).

 

Is there a way to flip a switch and turn off any windows to pop up? If not, anyone have a suggestion how to not have the screen keep popping tables while running? Output of the script while running is in the attachment. 

 

Script is below

 

 

For( i = 1, i <= 5, i++,
For (j= 1, j <= 5, j++,
biv = dt << Bivariate(
Y( ParmColumns[i] ),
X( ParmColumns[j] ),
Fit Line( {Line Color( {212, 73, 88} )} ),
Invisible

);
rbiv = biv << Report;
tb = rbiv[Table Box( 1 )];
mcdt = tb << Make Combined Data Table << Show Window( 1 );
if (counter == 0 ,
combineddt = mcdt
);
if (counter > 0 ,
combineddt << Concatenate(
mcdt,
"Append to first table"
);
);
counter ++;
rbiv << Close Window;

mcdt << Invisible;
combineddt << Invisible;
wait(.1);
);

);

// Select and delete all rows that are empty
combineddt << Select Where(:"Column 1" != "RSquare") << Delete Rows;
combineddt << Select Where(:X == :Y) << Delete Rows;

//save stacked data table
combineddt << Save (Output_File );


// Close data table and do not save JMP tables. CSV files are already saved.
Close All( Data Tables, NoSave );

Screen Shot 2020-07-02 at 4.51.53 PM.png

2 ACCEPTED SOLUTIONS

Accepted Solutions
Highlighted
gzmorgan0
Super User

Re: Running JSL in background without any windows popping up

@AmanS ,

You should look up "invisible"  for report wndows and invisible vs private for data tables.

 

Names Default To Here( 1 );
flag=random Integer(0,1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
if(flag==1,
         obj = dt << Bivariate( Y( :Weight ), X( :Height ), Invisible ),
       //else
		obj = dt << Bivariate( Y( :Weight ), X( :Height ) )
		
 ); //end if

View solution in original post

Highlighted

Re: Running JSL in background without any windows popping up

You can learn much from @gzmorgan0's solution. It is provides a general framework. In this specific case, though, I will use JMP interactively to get what I want. No explicit iteration is required as JMP almost calculates the desired result for you. Just one extra step at the end.

 

Actually, I wrote a script to do it but the comments should provide the path to the result that you want.

 

Names Default to Here( 1 );

// open example with several continuous numeric variables
dt = Open( "$SAMPLE_DATA/Fitness.jmp" ) ;

// obtain names of such variables
cols = dt << Get Column Names( Continuous );

// convert the names to references
cols = dt << Get Column Reference( cols );

// use the references to launch platform with list of correlations
mult = dt << Multivariate( Y( Eval( cols ) ), Pairwise Correlations );

// obtain new data table with correlations
dt = Report( mult )["Pairwise Correlations"][TableBox(1)] << Make Into Data Table;

// convert correlations into linear coefficient of determination
dt << New Column( "R Square", Numeric, Continuous,
	Values( (dt:Correlation << Get As Matrix)^2 )
);
Learn it once, use it forever!

View solution in original post

5 REPLIES 5
Highlighted
gzmorgan0
Super User

Re: Running JSL in background without any windows popping up

@AmanS ,

You should look up "invisible"  for report wndows and invisible vs private for data tables.

 

Names Default To Here( 1 );
flag=random Integer(0,1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
if(flag==1,
         obj = dt << Bivariate( Y( :Weight ), X( :Height ), Invisible ),
       //else
		obj = dt << Bivariate( Y( :Weight ), X( :Height ) )
		
 ); //end if

View solution in original post

Highlighted
AmanS
Level II

Re: Running JSL in background without any windows popping up

Thanks @gzmorgan0 

 

Appreciate you taking the time to respond to this query

Highlighted

Re: Running JSL in background without any windows popping up

You can learn much from @gzmorgan0's solution. It is provides a general framework. In this specific case, though, I will use JMP interactively to get what I want. No explicit iteration is required as JMP almost calculates the desired result for you. Just one extra step at the end.

 

Actually, I wrote a script to do it but the comments should provide the path to the result that you want.

 

Names Default to Here( 1 );

// open example with several continuous numeric variables
dt = Open( "$SAMPLE_DATA/Fitness.jmp" ) ;

// obtain names of such variables
cols = dt << Get Column Names( Continuous );

// convert the names to references
cols = dt << Get Column Reference( cols );

// use the references to launch platform with list of correlations
mult = dt << Multivariate( Y( Eval( cols ) ), Pairwise Correlations );

// obtain new data table with correlations
dt = Report( mult )["Pairwise Correlations"][TableBox(1)] << Make Into Data Table;

// convert correlations into linear coefficient of determination
dt << New Column( "R Square", Numeric, Continuous,
	Values( (dt:Correlation << Get As Matrix)^2 )
);
Learn it once, use it forever!

View solution in original post

Highlighted
AmanS
Level II

Re: Running JSL in background without any windows popping up

Thanks @markbailey . I like how streamlined the code is using the multivariate feature instead of what I was trying to do with a complicated nested for loop. Much to learn!

Highlighted
Craige_Hales
Staff (Retired)

Re: Running JSL in background without any windows popping up

Removing the wait(...) may be sufficient. That gives the OS time to show the window. Wait is usually not needed, or there is an alternative that doesn't need it, like <<runformulas. Sometimes you do need the window to show/update though.

 

edit:

instead of

mcdt << Invisible; // does not work this way

which @gzmorgan0  showed the right way to use, you probably want to close the tables as soon as they are no longer needed. Change it to 

close(mcdt,"nosave");

I'd still leave out the wait(...) .

Craige
Article Labels