This is a collection of scripts to help with data wrangling of files generated by the "QMem" measurement software.
The main functionality is provided by WranglingFiles.py
, that processes the output of the QMem measurement software
into readable, and Origin ® compatible *.csv files and generates matplotlib graphs to quickly visually analyze data.
Odd and even sweep numbers are treated seperately to account for hysteretic or memristive effects.
The script also provides the following calculation fucntions:
- Absolute values of current / current density (for semi-log plots)
- Memory window (the ratio between the absolute values of odd and even sweeps)
- Differential resistance
- Fowler-Nordheim with variable exponent
- Normalized differential resistance (NDR)
- Statistics on all measured and calculated data (min, max, avg)
Calculations made and plots generated by this script are controlled via the config.ini file within the same folder as the main script. The following Parameters can be set:
section | parameter | type | explanation |
---|---|---|---|
Directory | home_directory | Bool | The directory where all folders with data can be found.\Will automatically change to last one used and leaving it empty will set it to root |
Parameters | filter | string | The column that is evaluated from the file. Could be "Current [A]" or "Current Density" |
Parameters | resistance_slice | double | The value at which the differential resistance calculation is displayed |
Parameters | resistance_range | double | The size of the window used to perform linear fits of data to to calculate the differential resistance |
Parameters | mem_method | string | The method of how the memory window is calculated. Either "divide" if currents have to be devided (standard method) ord "substract" if currents should be subtracted. |
Parameters | start_index | integer | The first sweep that is used for calculations. "2" ignores the first sweep that often shows "burn-in" effects |
Calculate | absolute | bool | Parameter that sets whether or not the absolute value of currents is calculated (required "True" for semi-log plots, "False" for further Tunneling model processing) |
Calculate | stats | bool | Parameter that sets whether or not the sweep-to-sweep statistics are calculated. |
Calculate | fowler-nordheim | bool | Parameter that sets whether or not fowler_nordheim calculations should be performed (i.e. a dataset with ln(J/V)^2 vs J/V) |
Calculate | memory_window | bool | Parameter that sets whether or not the memory window should be calculated |
Calculate | differential_resistance | bool | Parameter that sets whether or not the normalized differential resistance should be calculated |
Plot | currents | bool | Parameter that sets whether or not I-V or J-V Data from all sweeps should be plotted |
Plot | stats | bool | Parameter that sets whether or not I-V or J-V min,max and average Data should be plotted |
Plot | currents | bool | Parameter that sets whether or not Fowler Nordheim Plots should be generated. |
Plot | currents | bool | Parameter that sets whether or not the memory window vs voltage plots should be generated. |
Plot | currents | bool | Parameter that sets whether or not the differential resistance vs voltage plots should be generated |
Plot | currents | bool | Parameter that sets whether or not the resistance slice and resulting fit should be displayed |
After processing, csv files are generated and suffixes according to their content are added:
- *_header: The header extracted from the measurement file - including all measurement parameters (e.g. step size, operator, material ID, ..)
- *_all: File with all sweeps or *_stats: File with only the statistical analysis of all sweeps
- *-abs: indicating that only absolute J or I values are recorded
- *_Current _[A] or _Current-density: Indicating either current or current density within the file
- *_fn: Results from Fowler Nordheim calculations (including V-->1/V at x-Position)
- *_mwindow _ {method} where {method} is either "divide" or "subtract"
After initial processing, AggregateResults.py
provides a convenicence function to aggregate all mean
values within a folder. It returns one csv file for odd and even sweeps each and names columns according to device size and measurement ID.
The folder OriginProcessing provides two importfilter and one origin design file: One import filter to import the results from initial processing and one import filter for stats files (with automatic changing of column types). The origin design files provides a design typically used in qMem publications.