Please see my script so far. At the end of the script, I want to open another csv file into a jmp table and extract columns into the originally created jmp table from the first invocation.
Names Default To Here(1);
//dt = Open( "C:\Users\VISHAL.SANGHAI\OneDrive - MiniCircuits\Documents\Mini Circuits Work Folder\US-AMP\US-AMP-2\Pkg data V1 old epi June 2024 testing\Power with new epi boards - Jul 2024\USAMP2_newepi_U2_VG_np465_VD_15_ID_500mA_VC_9_P5dB_biasteeoutsideTC_postdecap.csv" );
//concatenate files
// Setup an empty table to start to concatenate other tables to
dtbase = New Table("Base Table");
// Have the user select the starting folder
dirpath = Pick Directory("Pick the Top Level Directory");
// Get all of the files in all of the folders that are under the picked folder
TheFileList = Files In Directory(dirpath, "recursive");
// Go through all of the files and read in append those that meet your
// requirement. You will need to amend the IF statement to meet your criteria
For(i = 1, i <= N Items(TheFileList), i++,
If(Uppercase(Word(-1, TheFileList[i], ".")) == "CSV" & Is File(dirpath || TheFileList[i]) == 1,
dt = Open(dirpath || TheFileList[i]); //to add filename as separate column in datatable
dtname = dt << get name(); //to add filename as separate column in datatable
dtname_list = Repeat({dtname}, N Row(dt)); //to add filename as separate column in datatable
dt << New Column("Filename", character, set values(dtname_list)); //to add filename as separate column in datatable
dtbase = dtbase << concatenate(dt, append to first table(1));
Close(dt, nosave);
)
);
// Add Global info as table variables
// Scan the data table based on column and assign the right row
theRow = 1;
While(Column(dtbase, 1)[theRow] != "Freq(Hz)",
If(Column(dtbase, 2)[theRow] != "",
dtbase << new table variable(Column(dtbase, 1)[theRow], Column(dtbase, 2)[theRow])
);
theRow++;
);
// Get rid of unwanted rows (removal of blanks)
dtbase << select where(As Column(dtbase, 5) == "" & As Column(dtbase, 6) == "");
dtbase << delete rows;
// Rename columns
theRow = (dtbase << get rows where(As Column(dtbase, 1) == "Freq(Hz)"))[1];
For(i = 1, i <= N Cols(dtbase), i++,
If(
Column(dtbase, i)[theRow] ==
"USAMP2_newepi_U1_VG_np467_VD_15_ID_500mA_VC_9_P5dB_biasteeoutsideTC_postdecap", "Filename",
Column(dtbase, i)[theRow] != "Filename",
Column(dtbase, i) << set name(Column(dtbase, i)[theRow])
)
);
dtbase << delete rows(theRow);
//Convert columns to numeric
Local({old dt = Current Data Table()},
Current Data Table(dtbase("base_table"));
For Each({col, index},
{:"Freq(Hz)"n, :"S21 Log Mag(dB)"n, :"S11 Log Mag(dB)"n, :"S12 Log Mag(dB)"n,
:"S22 Log Mag(dB)"n, :"CompIn21 Log Mag(dBm)"n, :"CompOut21 Log Mag(dBm)"n,
:"DeltaGain21 Log Mag(dB)"n, :"CompDMM VC Lin Mag(A)"n, :"CompDMM VD Lin Mag(A)"n},
col << Data Type(Numeric) << Set Modeling Type("Continuous") << Set Field Width(12)
);
Current Data Table(old dt);
);
// Add New column: Freq(GHz)
Data Table("Base Table") << New Column("Freq(GHz)",
Numeric,
"Continuous",
Format("Best", 12),
Formula(:"Freq(Hz)"n / 1000000000)
) << Move Selected Columns({:"Freq(GHz)"n}, after(:"Freq(Hz)"n));
Data Table("Base Table") << Text to Columns(columns(:Filename), Delimiters("_"));
//Rename columns
:Filename1 << Set Name(" Product ID");
:Filename 2 << Set Name(" Variant*");
:Filename 3 << Set Name(" SN#");
:Filename 4 << Set Name(" VG ");
:Filename 5 << Set Name(" VG value ");
:Filename 6 << Set Name(" VD ");
:Filename 7 << Set Name(" VD value ");
:Filename 8 << Set Name(" ID ");
:Filename 9 << Set Name(" ID value ");
:Filename 10 << Set Name(" VC ");
:Filename 11 << Set Name(" VC value ");
:Filename 12 << Set Name(" Parameter ");
//Save JMP table
dtbase << save("")
//thru_line_file = Pick File ("Pick a Data File");
//After this point, I need to allow user to pick a file. once he picks it, I would like to extract a column from that file by matching one column (common to both files) and get that column into the base table I created before.
;
Edit 2024-09-13 jthi: Added JSL formatting
Thanks,
Vishal