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 formattingYou can use Pick File() to let user select a file and after that you might be able to use Update to add the new information to your table. Do the update first interactively in JMP and then get the script created by JMP