SpinCore Logo Home
Contact Us
About Us
Purchasing Info
Software Downloads

banner_left.jpg banner_right.jpg


SpinCore Pulse-Width Finder package for RadioProcessor and iSpin-NMR


The Pulse-Width Finder program will be included in the next candidate version of SpinAPI within the RadioProcessor directory.  Until then it can be downloaded using the following link: Pulse-Width Finder download. The Pulse-Width Finder program performs a set of single pulse NMR scans with varying pulse width to find the 90 degree, 180 degree, and the 360 degree pulse width.  The batch file allows for a graphical output using gnuplot, a free plotting program.  For more information, please see the gnuplot section below.  An example of data obtained from running the Pulse-Width Finder program is shown below in figure 1.

Example Output
Figure 1: Example Pulse-Width Finder Plot (generated by gnuplot)

The program also outputs the 90 degree, the 180 degree, and the 360 degree pulse widths along with the pulse width of the maximum peak and the minimum peak.  The pulse_width_finder.exe program takes multiple command line parameters as seen below, and it outputs all of the data in multiple formats

How Pulse-Width Finder Works:

Currently the Pulse-Width Finder works by first collecting all the data for scans with varying pulse widths.  It then takes the first real point from each scan, and finds where these points cross the x-axis.  The first crossing is the 180 degree pulse width; the second crossing is the 360 degree pulse width.  The 90 degree pulse width is calculated by dividing the 180 degree pulse width in half.  This works if the plot is close to a sinusoid like in figure 1, but if there are cases when this may not be correct.  For those occasions, the Pulse-Width Finder program also gives you the pulse widths for the points with with the greatest real peak and the least real peak.  You can also eyeball the 90 degree pulse width if you used enough steps.  If that is not good enough, the program outputs all the pulse width and peak data to a .txt file so you can perform your own algorithm to find the 90 degree pulse width.

Pulse-Width Finder Parameters:

The Pulse-Width Finder executable takes the following arguments as inputs in order:

fname - The file name prefix for all of the output files (no extensions needed)
spectrometer_frequency - The spectrometer frequency in MHz
spectral_width - The spectral width in kHz
adc_freq - Frequency of the ADC in MHz
num_points - Number of points acquired for each single pulse scan
num_scans - Number of single pulse scans to run for each pulse width
blanking_delay - The amount of time to de-blank the amplifier before the excitation in ms
ringdown_time - The time between the pulses and signal acquisition in us
repetition_delay - The time between single pulse scans in seconds
tx_phase - The phase of the excitation pulse in deg
bypass_fir - Bypass the FIR filter
blanking_bit - Bit used to control the amplifier blanking (example: 0b00000001 is blanking bit 0, 0b00000010 is blanking bit 1)
res_auto - Specifies if and how often the resonance frequency is checked and adjusted (see Automating Parameters section below)
phase_auto - Specifies if the output data will be automatically phased (see Automating Parameters section below)
dc_auto - Specifies if DC components caused by acquisition filters or amplifiers are automatically removed (see Automating Parameters section below)
res_pw - Pulse width to use for resonance scans in us
min_pw - The lower end of the pulse width range in us
max_pw - The upper end of the pulse width range in us
step_pw - The step size for the pulse width range in us

Automating Parameters:

There are multiple parameters for the Pulse-Width Finder program that will automate different tasks.  Here is a description of them and what they control:
  • res_auto - automatic resonance frequency finder
    • If res_auto = 0, then there will be no changes to the spectrometer frequency.
    • If res_auto = 1, then when the program starts, it will find the resonance frequency using a pulse width of res_pw.  It will set the spectrometer to that frequency, and continue the program with that same frequency.
    • If res_auto = 2, then the program will find the resonance frequency at the beginning of the program and during the change from one pulse width to the next.  This keeps the system on resonance throughout the entire experiment.
  • auto_phasing - automatically phases the the tx_phase and the output data
    • If auto_phasing = 0, then there is no change to tx_phase or the phase of the acquired data.
    • If auto_phasing = 1, then tx_phase is automatically determined at the beginning of the program by finding the phase of the first point of a single pulse scan.
    • If auto_phasing = 2, then tx_phase is automatically determined at the beginning of the program, and each data set is kept on phase by phasing the raw data with a rotation so the first point is purely real.
  • dc_auto - corrects for errors in dc offset due to acquisition filters and amplifiers.
    • If correct_dc_offset = 0, there is no change to the acquired data.
    • If correct_dc_offset = 1, then the last 1/4 of points in the real and imaginary channels are averaged to find the dc offset.  Then that amount is subtracted from both the real and imaginary channels to correct for the offset.

Pulse-Width Finder Output Files:

The pulse_width_finder.exe file produces many output files.  They all use fname as their prefix.  The types of output files are shown below:
  • fname_resonance.fid - Scan used to find the resonance frequency
  • fname_phase.fid - Scan used to find the optimal tx_phase
  • fname_calibrated.fid - Scan used to show the results of the automatic resonance finding and/or the automatic phasing
  • fname_#.fid - Felix output from each pulse width scan
  • fname_final.txt - Stores the pulse width in us, the real peak, and the imaginary peak for each scan
  • fname_pulse_widths.txt - Stores the results from the automatic pulse width finder (90 degree pulse width, etc.)
  • fname_plot.gp - A gnuplot script to plot the output figure.  This program generates fname_output.jpg which is a plot of all the data from the program (see figure 1).

Gnuplot Information:

The Pulse-Width Finder batch file has an option that uses the program gnuplot to create the output graph that shows the final data.  Gnuplot is a multi-platform plotting program that is freely distributed at gnuplot's website.  For this program, the Windows binary download from Source Forge is sufficient.  The Pulse-Width Finder batch file calls the gnuplot program to process and display the data, so for that to work correctly, you need to specify the location of gnuplot.exe in the variable gnuplot_path within the batch file.  Normal locations are C:\Program Files\gnuplot\binary or C:\gnuplot\binary, but yours may be different depending on where you installed gnuplot..

Pulse-Width Finder Testing Tips:

  • Use gnuplot to visualize your data by downloading gnuplot and setting the use_gnuplot parameter in the batch file to 1.  For more information see the Gnuplot Information section.
  • Pick your range of pulse widths to include two zero crossings.  Therefore the program will be able to calculate the 90 degree pulse width, the 180 degree pulse width, and the 360 degree pulse width.  If you are not getting results for the 180 degree pulse width or the 360 degree pulse width, you are not testing a large enough range of pulse widths.
  • If you are having trouble with the pulse width finder, try using a small step size and eyeballing the 90 degree pulse width.
  • Make sure your repetition delay is long enough.  If your output graph has a short rising time and a long falling time, then you may need a longer repetition delay to get better results.

Home | Products | Applications | Contact Us | Purchasing Info | About Us | Software Downloads

© 2017 SpinCore Technologies, Inc.