GithubHelp home page GithubHelp logo

tavitag / igor-data-analysis Goto Github PK

View Code? Open in Web Editor NEW

This project forked from david-hoffman/igor-data-analysis

0.0 1.0 0.0 124 KB

Igor Pro data analysis procedures

License: Other

IGOR Pro 100.00%

igor-data-analysis's Introduction

#Igor Data Analysis

The license for the code contained in this repository is contained in included the license.txt file.

I have written these IGOR Pro procedures to analyze data collected during my doctoral research, as such the user interface is primarily through the command window and the documentation is incomplete. Nevertheless, I have found these procedures to be extraordinarily useful and I'd like to share them with the rest of the research community.

My research primarily uses ultrafast lasers to perform two main types of vibrational spectroscopy 1.) Femtosecond Stimulated Raman Spectroscopy, FSRS, 2.) and Impulsive Stimulated Raman Spectroscopy, ISRS (in preparation). The relevant publications can be found here.

##Utilities.ipf A set of utilities for the processing of time resolved vibrational spectroscopic data.

Some notes on specific functions

  • GroundSubtract2(timepoints,ground,startpt,endpt,type,[q]): This function loops through all the time delays subtracting the ground state spectrum from the raw excited state spectra by scaling the excited state spectra to the ground state using a solvent feature. In this way fluctuations in Raman pump power are controlled for using the solvent as an internal standard. This is particularly important when the Raman pump is near a transient absorption feature as this algorithm will correct for any transient attenuation of the Raman pump.

  • SolventSubtract2(spectrum, solvent, sp, ep, type): This function scales the solvent to the spectrum. This is necessary to be internally consistend with GroundSubtract2.

##DataImport.ipf Functions designed to import data from a FSRS instrument.

This procedure file also adds items to the "Load Waves" menu:

Menu "Load Waves"
	"-"
	"FSRS Data ... /1", LoadFSRSData()
	"Raw FSRS Data ... /S 1", LoadRawFSRSData()
	"-"
	"DAQ Scan Data ... /2", LoadDAQData()
	"Detector XC Data ... /S 2", LoadDetXCData()
	"-"
	"CW Data ... ", LoadCWData()
	"UV-vis Data ...", LoadUVvisData()
End

The LoadUVVisData() procedure can be used to load any file in the JCAMP (.DX) format.

LoadCWData() can be used to load any generic txt file.

The LabVIEW programs which generate the FSRS data are available here.

##FitFuncs.ipf A set of useful fitting functions for the ultrafast spectroscopist. Many different kinds of exponentials convoluted with a gaussian instrument response.

NOTE: the width of the gaussian IRF is defined to be the FWHM/(2*sqrt(ln(2))) which is consistent with Igor's built-in Gaussian function within the CurveFit dialog meaning that this parameter can be used directly.

##FitTimeSeries.ipf Contains FitTimeSeries a versatile batch fitting function. Fits a sum of either Gaussians or Lorentzians to a subset of time resolved FSRS spectra. Coefs is a wave of coefficiencts for the peaks, i.e. Coefs={0,Amp1,Center1,FWHM1,...,Ampn,Centern,FWHMn}. The 0 is necessary for backwards compatibility. Wavenumber is a text wave containing the peak labels, this will determine the names of the output waves. I usually just use the approximate center frequency. Make sure that your Coefs wave has the correct number of coefficients relative to your Wavenumber wave.

Options include:

  • PolyNum the order of the polynomial baseline. To remove the baseline input PolyNum=0. The default is cubic.

  • Plot=1 will plot the results in a pleasing manner.

  • PeakType=1 is Gaussian (default behaviour). PeakType=0 is Lorentzian.

##FitTimeSeriesDisp.ipf Contains FitTimeSeries2 which is almost identical to FitTimeSeries except that it uses a dispersive lorentzian lineshape function which has one parameter for the amplitude of the real part and one for the amplitude of the dispersive part. If the initial values for either of these components is 0 than the function assumes that those peaks are totally real or dispersive and holds that component to 0.

##PerkinElmerImport.ipf This file contains a single procedure, LoadPEData(). This procedure will ask the user which files to load and then will load Perkin Elmer's proprietary binary format into waves named after the file. It will include the experimental info stored in the binary file in the created wave's note. The procedure will also display the loaded waves.

##SignalProcessing.ipf This Igor Procedure File (.ipf) contains procedures useful for analyzing ISRS data. In fact, these procedures should be useful for analyzing any data which can be reasonably described as a sum of damped sinusoids. The two main procedures are:

  • LPSVD(signal,[M,LFactor,RemoveBias]) which fits the data, in a linear least squares sense using the Linear Prediction with Singular Value Decomposition (LPSVD) algorithm. Estimates of the variances for the parameters returned by LPSVD are calculated as the Cramer-Rao bound and returned in a wave named sigma_LPSVD_coefs.
  • Cadzow(signal, M, iters,[lFactor,q]) which filters the data using Cadzow's Composite Property Mapping Algorithm.

Analytics

Bitdeli Badge

igor-data-analysis's People

Contributors

david-hoffman avatar bitdeli-chef avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.