Import characterisation data from Organic Thin Film Transistors (O-FETs) from available online sources, into a common python data structure.
Supports the following data sources:
flexterra_2021: https://zenodo.org/records/17701094 purdue_2022: https://github.com/yeeyoung/TCASi-ONC iit_cnr_2025: https://zenodo.org/records/17274644
import os
import iit_cnr_2025
transistors = iit_cnr_2025.import_transistors(r"path/to/data")
Then consider using https://github.com/event-driven-robotics/ivplot to plot the transistors, example code:
from ivplot import ivplot
for transistor_name, transistor in transistors_purdue_2022.items():
label = '_'.join(('purdue', transistor_name))
fig = ivplot(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 download the raw data, and exposes a function import_data, which returns a dict in this form:
{
"<transistor_name>": {
"sweeps": [...],
"params": {...},
"data": pandas.DataFrame(...)
},
...
}
Each sweep in the list of 'sweeps' is a dict in this form:
{
'datetime': str, # in form 'YYYY_MM_DD_HH_MM_SS'
'type': str, # 'g' for Vg sweep or 'd' for Vd sweep, or 'both' for mixed data.
'data': df # DataFrame with columns ['vgs', 'vds', 'ids']
}
'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: metres, Kelvin etc.