#!/usr/bin/env perl6
use v6;
my $Append = False;
my $Test_Descriptor_Keys_File = "(compute)";
my $Lot_ID = "E1517-002";
my @Wafer_List = "Wafer_11", "Wafer_12";
my @Analysis_Master_Name = "AnalysisMaster_Autoprobe_Prod_20111005";
my $Test_Name_For_Processing = "COW";
my $Path_To_Data_File = "./";
my $Process_Reverse_Sweeps = 1; my $Print_Graphs = 1;
my $Print_Graphs_To_File = 1;
my $Delete_Summary_Filename_Sheets = 0;
my %Environment = Lot_ID => $Lot_ID, Wafer_List => @Wafer_List, Path_To_Data_File => $Path_To_Data_File,
Test_Name_For_Processing => $Test_Name_For_Processing, Analysis_Master_Name => $Analysis_Master_Name,
Test_Descriptor_Keys_File => $Test_Descriptor_Keys_File, Append => $Append, Process_Reverse_Sweeps => $Process_Reverse_Sweeps,
Print_Graphs => $Print_Graphs, Print_Graphs_To_File => $Print_Graphs_To_File, Delete_Summary_Filenames_Sheets => $Delete_Summary_Filename_Sheets;
sub main() {
say "Starting...";
my $myReturn = 1;
my $myInput = "";
my $PrintGraphsStatus = "(yes)";
my $PrintGraphsToFileStatus = "(yes)";
my $ProcessReverseSweeps = "(yes)";
my $AppendDataToSummary = "(no)";
while ($myReturn) {
say "Choose Function: ";
say "1. Process TFT Autoprobe Data";
say "2. Process TFT Princeton Data";
say "3. Print Graphs? " ~ $PrintGraphsStatus;
say "4. Print Graphs to File? " ~ $PrintGraphsToFileStatus;
say "5. Process TFT Data";
say "6. Delete Summary & Filenames Sheets";
say "7. Process Reverse Sweeps " ~ $ProcessReverseSweeps;
say "8. Append Data to Summary " ~ $AppendDataToSummary;
say "9. Quit";
$myInput = get();
given ($myInput) {
when 1 { $myReturn = &Process_TFT_Autoprobe_Data(%Environment); }
when 2 { $myReturn = &Process_TFT_Princeton_Data(%Environment); }
when 3 { $myReturn = &Print_Graphs(%Environment); }
when 4 { $myReturn = &Print_Graphs_To_File(%Environment); }
when 5 { $myReturn = &Process_TFT_Data(%Environment); }
when 6 { $myReturn = &Delete_Summary_Filenames_Sheets(%Environment); }
when 7 { $myReturn = &Process_Reverse_Sweeps(%Environment); }
when 8 { $myReturn = &Append_Data_to_Summary(%Environment); }
when 9 { exit(0); }
default { $myReturn = 1; }
}
}
}
sub Process_TFT_Autoprobe_Data() {
my %Environment = shift;
my $Lot_ID = %Environment{'Lot_ID'};
my @Wafer_List = %Environment{'Wafer_List'};
my $Path_To_Data_File = %Environement{'Path_To_Data_File'};
say "Enter your lot ID:";
$Lot_ID = get();
say "called Process TFT Autoprobe Data";
}
sub Process_TFT_Princeton_Data() {
my %Environment = shift;
say "called Process TFT Princeton Data";
}
sub Print_Graphs() {
my %Environment = shift;
say "called Print Graphs";
}
sub Print_Graphs_To_File() {
my %Environment = shift;
say "called Print Graphs to File";
}
sub Process_TFT_Data() {
my %Environment = shift;
say "called Process TFT Data";
}
sub Delete_Summary_Filenames_Sheets() {
my %Environment = shift;
say "called Delete Summary Filenames Sheets";
}
sub Process_Reverse_Sweeps() {
my %Environment = shift;
say "called Process Reverse Sweeps";
}
sub Append_Data_to_Summary() {
my %Environment = shift;
say "called Append Data to Summary";
}
main();
1;
A blog for my notes on perl and various other programming languages and applications I work on.
Tuesday, June 9, 2015
Converting Excel Macros to Perl
I'm currently working on porting our Excel macros at work to LabView. To get a quick prototype up and running I have been translating the Visual Basic code and the formulas in all of the spreadsheet cell to Perl 6. In the process I get to learn more about Perl 6 and see what all the fuss is about. The Excel macro takes a directory of data files from our transistor testing procedure and extracts certain model parameters for our design engineers. The data is located in tab separated plain text files. They contain voltage and current data for different aspects of the transistor. Each folder contains the data of over a dozen transistors. Here is what I've done so far:
Thursday, May 7, 2015
Whole Cell Simulation Project
Lately I've been thinking about computer simulations and what would be the most fruitful thing to simulate right now. I've read about simulating an entire bacterial cell at the molecular lever in the past, but only recently have I learned that the people who accomplished that feat have made their software available for free downloading. I was super excited and quickly installed the source code into three computers. The source code is found here: https://github.com/CovertLab/WholeCell
The code is written in Matlab 2010b. I've been successful at getting it to work on Matlab 2015a and Matlab 2010a, with Windows 7 and Redhat Linux respectively. Oddly I have not been able to get the software to work on Scientific Linux 6 running either Matlab 2012a or 2010b. That machine runs a dual core Pentium D processor and there seems to be something wrong at a deep level with one of the number crunching libraries.
The code is written in Matlab 2010b. I've been successful at getting it to work on Matlab 2015a and Matlab 2010a, with Windows 7 and Redhat Linux respectively. Oddly I have not been able to get the software to work on Scientific Linux 6 running either Matlab 2012a or 2010b. That machine runs a dual core Pentium D processor and there seems to be something wrong at a deep level with one of the number crunching libraries.
Friday, November 14, 2014
Quick and dirty Matlab/Octave replacement using JScript
In my previous post I showed that it is possible to make a simple read-eval-print-loop (REPL) in JScript for the Windows command line. Today I show that it is also possible to add libraries to this REPL for quick access and experimentation. I have been adding functions to my JScript matrix library for work when I realized that I was quickly needing Matlab levels of functionality in order to get what I needed. Today I decided to try loading a Javascript library for numerical work into JScript. I was surprised how painless the process was!
The first thing I needed to do was write a WSF file to load the library with the jshell REPL I created in my last post. I then found a nice Javascript library online (http://numericjs.com/numeric/index.php) and integrated this library with my jshell.js REPL script into the WSF file. I called my file jlab.wsf.

The first thing I needed to do was write a WSF file to load the library with the jshell REPL I created in my last post. I then found a nice Javascript library online (http://numericjs.com/numeric/index.php) and integrated this library with my jshell.js REPL script into the WSF file. I called my file jlab.wsf.
Subscribe to:
Posts (Atom)