Import characterisation data from Organic Thin Film Transistors (O-FETs) from available online sources, into a common python data structure.
import os
os.environ['PATH_TO_TRANSISTOR_SWEEPS'] = r"path/to/Sweep data CNR"
from iit_cnr_2025 import transistors as transistors_iit_cnr_2025
os.environ['PATH_TO_TRANSISTOR_SWEEPS'] = r"path/to/TCASi-ONC"
from purdue_2022 import transistors as transistors_purdue_2022
Then consider using https://github.com/event-driven-robotics/ivplot to plot the transistors, example code:
from plot import plot
for transistor_name, transistor in transistors_purdue_2022.items():
label = '_'.join(('purdue', transistor_name))
fig = plot(transistor['sweeps'], marker='o', label=label, markersize=6)
##Description
Each script is an importer for a different source of raw data.
Each script describes where to dowload the raw data, and then, running the script, the output will be a dict in this form:
{
"<transistor_name>": {
"sweeps": [...],
"params": {...},
"data": pandas.DataFrame(...)
},
...
}
'params' may look like:
transistor['params'] == {
'length': <float or '?'>,
'width': <float or '?'>,
'polarity': 'p' or 'n' or '?',
'permittivity_insulator_relative': 3.15,
'thickness_insulator': 700e-9,
'temperature': 290,
}
Units are always SI units, so metres, kelvin etc.
Each sweep in the a list of 'sweeps' is a dict in this form:
{ 'datetime': parsed['datetime'], # string from filename (first 6 tokens) 'type': parsed['sweep_type'], # 'g' for Vg sweep or 'd' for Vd sweep, or 'both' for mixed data. 'data': df # DataFrame with columns ['vgs', 'vds', 'ids'] }