qMem Datawrangler
This script processes output of qMem measurement software into an Origin ® compatible *.csv files and matplotlib graphs to quickly visualy analyze data. Odd and even sweep numbers are treated seperately to account for hysteretic or memristive effects.
It also performs the following calculations:
- 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)
Parameters
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 |
Files Generated
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"