cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • Learn how to build custom Python data connectors and further customize JMP’s Data Connector Framework with the Python Data Connector Demo, available now in the JMP Marketplace!
  • See how to create experiments to support product design and ID useful product features. Register for June 12 webinar, 2pm US Eastern Time.

Discussions

Solve problems, and share tips and tricks with other JMP users.
Choose Language Hide Translation Bar
TDK_Long
Level III

Data table order is commingled

Hi folks,

 

I have three FRF (txt style) files to be imported into JMP, and I had the following script to import and process the data. I have one description table that has three description items, which need to be assigned to the FRF data table in an ascending order. For example:

 

z-ht_0.414 needs to be assigned to ccf_23101106.FRF

z-ht_0.464 needs to be assigned to ccf_23101703.FRF

z-ht_0.514 needs to be assigned to ccf_23101701.FRF

 

The problem of my script ends up opening ccf_23101703 later than ccf_23101701. As a result, the z-ht_0.514 is assigned to the second data table ccf_23101703 instead of the third data table ccf_23101701. It shows that ccf_101703 is the data table window opened last, but in my script, ccf_101703 should be the second data table window opened. Can anyone help explain this weird thing and provide a solution to my question? I have copied my script below and attached the raw data. Please let me know if you need further information. Thanks.

//-----------------------------------------------------------------------------------------------------------------

Names Default To Here( 1 );
Clear Globals();
 
Description = New Table( "Description",
	Add Rows( 0 ),
	New Column( "Descriptioin",
		Character,
		set values(
			{
 
//==========================================================================
			// Manual input #1: the description of the FRF data (need to keep the colon)
			//==========================================================================
			"z-ht_0.414", "z-ht_0.464", "z-ht_0.514"}
		)
	)
);
FRF_file_num = N Rows( Description );
 
dtList = Multiple File Import(
	<<Set Folder( "E:\Reports\_ Software\JMP Learning\6 - FRF plotter for FEA\" ),
	<<Set Show Hidden( 0 ),
	<<Set Subfolders( 0 ),
	<<Set Name Filter
	//==========================================================================
	// Manual input #2: the name of the FRF data (need to keep the colon)
	//==========================================================================
	("
ccf_23101106.frf;
ccf_23101703.frf;
ccf_23101701.frf; 
"), 
 
	<<Set Name Enable( 1 ),
	<<Set Size Filter( {90190, 90190} ),
	<<Set Size Enable( 0 ),
	<<Set Date Filter( {3761729046.157, 3761730593.651} ),
	<<Set Date Enable( 0 ),
	<<Set Add File Name Column( 1 ),
	<<Set Add File Size Column( 0 ),
	<<Set Add File Date Column( 0 ),
	<<Set Import Mode( "CSVData" ),
	<<Set Charset( "Best Guess" ),
	<<Set Stack Mode( "Stack Similar" ),
	<<Set CSV Has Headers( 1 ),
	<<Set CSV Allow Numeric( 1 ),
	<<Set CSV First Header Line( 1 ),
	<<Set CSV Number Of Header Lines( 1 ),
	<<Set CSV First Data Line( 7 ),        // First row starts from row #7
	<<Set CSV EOF Comma( 0 ),
	<<Set CSV EOF Tab( 0 ),
	<<Set CSV EOF Space( 0 ),
	<<Set CSV EOF Spaces( 1 ),
	<<Set CSV EOF Other( "" ),
	<<Set CSV EOL CRLF( 1 ),
	<<Set CSV EOL CR( 1 ),
	<<Set CSV EOL LF( 1 ),
	<<Set CSV EOL Semicolon( 0 ),
	<<Set CSV EOL Other( "" ),
	<<Set CSV Quote( "\!"" ),
	<<Set CSV Escape( "" ),
	<<Set XML Method( "guess" ),
	<<Set XML Guess( "huge" ),
	<<Set XML Settings( XML Settings() ),
	<<Set JSON Method( "guess" ),
	<<Set JSON Guess( "huge" ),
	<<Set JSON Settings( JSON Settings() ),
	<<Set Import Callback( Empty() )
) << Import Data;
 
//==========================================================================
// Process the raw FRF data table for each indivdual FRF data
//==========================================================================
 
For( i = 1, i <= FRF_file_num, i++,
	dtList[i] << Set Window Size( 880, 400 );
	dtList[i] << Move Window( 1600, 0 + i * 20 );
	Column( dtList[i], 1 ) << setname( "Null" );
	Column( dtList[i], 2 ) << setname( "Freq kHz" );
	Column( dtList[i], 3 ) << setname( "Disp 1" );
	Column( dtList[i], 4 ) << setname( "FRF Phase" );
	Column( dtList[i], 5 ) << setname( "Disp 2" );
	Column( dtList[i], 6 ) << setname( "Phase 2" );
	Column( dtList[i], 7 ) << setname( "FRF Gain" );
	Column( dtList[i], 8 ) << setname( "Description" ); 
 
	Nrow = N Rows( dtList[i] );
	For( j = 1, j <= Nrow, j++,
		dtList[i][j, 2] = dtList[i][j, 2] / 1000;
		dtList[i][j, 7] = 20 * Log10( dtList[i][j, 3] / dtList[i][1, 3] );
		dtList[i][j, 8] = Description[i, 1];
	);
 
	dtList[i]:Null << Set Selected;
	dtList[i]:Disp 1 << Set Selected;
	dtList[i]:Disp 2 << Set Selected;
	dtList[i]:Phase 2 << Set Selected;
	dtList[i] << Delete Columns();  
//Wait (2);
 
);
 
1 ACCEPTED SOLUTION

Accepted Solutions
txnelson
Super User

Re: Data table order is commingled

If I am understanding the issue correctly, I forced the processing by inputting only one file at a time.  See my JSL below

//-----------------------------------------------------------------------------------------------------------------

Names Default To Here( 1 );
Clear Globals();
 
Description = New Table( "Description",
	Add Rows( 0 ),
	New Column( "Descriptioin",
		Character,
		set values(
			{
 
			//==========================================================================
			// Manual input #1: the description of the FRF data (need to keep the colon)
			//==========================================================================
			"z-ht_0.414", "z-ht_0.464", "z-ht_0.514"}
		)
	)
);
dtList = {};
FRF_file_num = N Rows( Description );
fileList = {"ccf_23101106.frf.txt", "ccf_23101703.frf.txt", "ccf_23101701.frf.txt"};
For Each( {file}, fileList,
	dt = Multiple File Import(
		<<Set Folder( "C:\Users\Jim\Documents\Discussion Group" ),
		<<Set Show Hidden( 0 ),
		<<Set Subfolders( 0 ),
		<<Set Name Filter//==========================================================================
		// Manual input #2: the name of the FRF data (need to keep the colon)
		//==========================================================================
		(file), 
 
		<<Set Name Enable( 1 ),
		<<Set Size Filter( {90190, 90190} ),
		<<Set Size Enable( 0 ),
		<<Set Date Filter( {3761729046.157, 3761730593.651} ),
		<<Set Date Enable( 0 ),
		<<Set Add File Name Column( 1 ),
		<<Set Add File Size Column( 0 ),
		<<Set Add File Date Column( 0 ),
		<<Set Import Mode( "CSVData" ),
		<<Set Charset( "Best Guess" ),
		<<Set Stack Mode( "Stack Similar" ),
		<<Set CSV Has Headers( 1 ),
		<<Set CSV Allow Numeric( 1 ),
		<<Set CSV First Header Line( 1 ),
		<<Set CSV Number Of Header Lines( 1 ),
		<<Set CSV First Data Line( 7 ),        // First row starts from row #7
		<<Set CSV EOF Comma( 0 ),
		<<Set CSV EOF Tab( 0 ),
		<<Set CSV EOF Space( 0 ),
		<<Set CSV EOF Spaces( 1 ),
		<<Set CSV EOF Other( "" ),
		<<Set CSV EOL CRLF( 1 ),
		<<Set CSV EOL CR( 1 ),
		<<Set CSV EOL LF( 1 ),
		<<Set CSV EOL Semicolon( 0 ),
		<<Set CSV EOL Other( "" ),
		<<Set CSV Quote( "\!"" ),
		<<Set CSV Escape( "" ),
		<<Set XML Method( "guess" ),
		<<Set XML Guess( "huge" ),
		<<Set XML Settings( XML Settings() ),
		<<Set JSON Method( "guess" ),
		<<Set JSON Guess( "huge" ),
		<<Set JSON Settings( JSON Settings() ),
		<<Set Import Callback( Empty() )
	) << Import Data;
	Insert Into( dtList, dt );
);
//==========================================================================
// Process the raw FRF data table for each indivdual FRF data
//==========================================================================
 
For( i = 1, i <= FRF_file_num, i++,
	dtList[i] << Set Window Size( 880, 400 );
	dtList[i] << Move Window( 1600, 0 + i * 20 );
	Column( dtList[i], 1 ) << setname( "Null" );
	Column( dtList[i], 2 ) << setname( "Freq kHz" );
	Column( dtList[i], 3 ) << setname( "Disp 1" );
	Column( dtList[i], 4 ) << setname( "FRF Phase" );
	Column( dtList[i], 5 ) << setname( "Disp 2" );
	Column( dtList[i], 6 ) << setname( "Phase 2" );
	Column( dtList[i], 7 ) << setname( "FRF Gain" );
	Column( dtList[i], 8 ) << setname( "Description" ); 
 
	Nrow = N Rows( dtList[i] );
	For( j = 1, j <= Nrow, j++,
		dtList[i][j, 2] = dtList[i][j, 2] / 1000;
		dtList[i][j, 7] = 20 * Log10( dtList[i][j, 3] / dtList[i][1, 3] );
		dtList[i][j, 8] = Description[i, 1];
	);
 
	dtList[i]:Null << Set Selected;
	dtList[i]:Disp 1 << Set Selected;
	dtList[i]:Disp 2 << Set Selected;
	dtList[i]:Phase 2 << Set Selected;
	dtList[i] << Delete Columns();  
//Wait (2);
 
);
Jim

View solution in original post

4 REPLIES 4
txnelson
Super User

Re: Data table order is commingled

try adding

current data table() << rerun formulas;

after the input JSL for the txt file.

Jim
TDK_Long
Level III

Re: Data table order is commingled

Hi Jim,

 

Thank you for looking into my case. Your above suggestion seems not solving my problem. My problem is when I import multiple files into JMP, the importing action does not follow the order of the files that I list. For example, when I try to import the following files:

ccf_008, ccf_005, ccf_007, ccf_002 in this order, but JMP will automatically sort the names of the files and generate the data table windows in the this order: ccf_002, ccf_005, ccf_007, ccf_008, which is not the order I want. Is there anyway that I can keep the order of the files because I need to assign the description to the files respectively? If the order is messed up, all of the data will be mistakenly labeled. Thank you. 

 

 

txnelson
Super User

Re: Data table order is commingled

If I am understanding the issue correctly, I forced the processing by inputting only one file at a time.  See my JSL below

//-----------------------------------------------------------------------------------------------------------------

Names Default To Here( 1 );
Clear Globals();
 
Description = New Table( "Description",
	Add Rows( 0 ),
	New Column( "Descriptioin",
		Character,
		set values(
			{
 
			//==========================================================================
			// Manual input #1: the description of the FRF data (need to keep the colon)
			//==========================================================================
			"z-ht_0.414", "z-ht_0.464", "z-ht_0.514"}
		)
	)
);
dtList = {};
FRF_file_num = N Rows( Description );
fileList = {"ccf_23101106.frf.txt", "ccf_23101703.frf.txt", "ccf_23101701.frf.txt"};
For Each( {file}, fileList,
	dt = Multiple File Import(
		<<Set Folder( "C:\Users\Jim\Documents\Discussion Group" ),
		<<Set Show Hidden( 0 ),
		<<Set Subfolders( 0 ),
		<<Set Name Filter//==========================================================================
		// Manual input #2: the name of the FRF data (need to keep the colon)
		//==========================================================================
		(file), 
 
		<<Set Name Enable( 1 ),
		<<Set Size Filter( {90190, 90190} ),
		<<Set Size Enable( 0 ),
		<<Set Date Filter( {3761729046.157, 3761730593.651} ),
		<<Set Date Enable( 0 ),
		<<Set Add File Name Column( 1 ),
		<<Set Add File Size Column( 0 ),
		<<Set Add File Date Column( 0 ),
		<<Set Import Mode( "CSVData" ),
		<<Set Charset( "Best Guess" ),
		<<Set Stack Mode( "Stack Similar" ),
		<<Set CSV Has Headers( 1 ),
		<<Set CSV Allow Numeric( 1 ),
		<<Set CSV First Header Line( 1 ),
		<<Set CSV Number Of Header Lines( 1 ),
		<<Set CSV First Data Line( 7 ),        // First row starts from row #7
		<<Set CSV EOF Comma( 0 ),
		<<Set CSV EOF Tab( 0 ),
		<<Set CSV EOF Space( 0 ),
		<<Set CSV EOF Spaces( 1 ),
		<<Set CSV EOF Other( "" ),
		<<Set CSV EOL CRLF( 1 ),
		<<Set CSV EOL CR( 1 ),
		<<Set CSV EOL LF( 1 ),
		<<Set CSV EOL Semicolon( 0 ),
		<<Set CSV EOL Other( "" ),
		<<Set CSV Quote( "\!"" ),
		<<Set CSV Escape( "" ),
		<<Set XML Method( "guess" ),
		<<Set XML Guess( "huge" ),
		<<Set XML Settings( XML Settings() ),
		<<Set JSON Method( "guess" ),
		<<Set JSON Guess( "huge" ),
		<<Set JSON Settings( JSON Settings() ),
		<<Set Import Callback( Empty() )
	) << Import Data;
	Insert Into( dtList, dt );
);
//==========================================================================
// Process the raw FRF data table for each indivdual FRF data
//==========================================================================
 
For( i = 1, i <= FRF_file_num, i++,
	dtList[i] << Set Window Size( 880, 400 );
	dtList[i] << Move Window( 1600, 0 + i * 20 );
	Column( dtList[i], 1 ) << setname( "Null" );
	Column( dtList[i], 2 ) << setname( "Freq kHz" );
	Column( dtList[i], 3 ) << setname( "Disp 1" );
	Column( dtList[i], 4 ) << setname( "FRF Phase" );
	Column( dtList[i], 5 ) << setname( "Disp 2" );
	Column( dtList[i], 6 ) << setname( "Phase 2" );
	Column( dtList[i], 7 ) << setname( "FRF Gain" );
	Column( dtList[i], 8 ) << setname( "Description" ); 
 
	Nrow = N Rows( dtList[i] );
	For( j = 1, j <= Nrow, j++,
		dtList[i][j, 2] = dtList[i][j, 2] / 1000;
		dtList[i][j, 7] = 20 * Log10( dtList[i][j, 3] / dtList[i][1, 3] );
		dtList[i][j, 8] = Description[i, 1];
	);
 
	dtList[i]:Null << Set Selected;
	dtList[i]:Disp 1 << Set Selected;
	dtList[i]:Disp 2 << Set Selected;
	dtList[i]:Phase 2 << Set Selected;
	dtList[i] << Delete Columns();  
//Wait (2);
 
);
Jim
TDK_Long
Level III

Re: Data table order is commingled

Hi Jim,

 

Perfect. It is what I am looking for. Learned a lot from your script. Thanks for the quick turnaround. 

Recommended Articles