Welcome to pyKinGenie!, a python package for analysing binding kinetics data
- Import Octet files (.frd)
- Import Gator files (Assay_#_Channel#.csv, Setting.ini and ExperimentStep.ini)
- Import custom CSV files
- Process the traces (alignment, baseline correction)
- Calculate binding kinetics (kon, koff, KD)
- Global fitting of multiple traces
- One-to-one, one-to-one with mass transport limitation, and one-to-one with induced fit models
Install PyKinGenie with pip:
pip install pykingenieIf you use uv, install it into the current environment with:
uv pip install pykingenieOr add it to an existing uv-managed project:
uv add pykingenieFor development:
git clone https://github.com/osvalB/pykingenie
cd pykingenie
uv sync --extra devfrom pykingenie import *
bli = OctetExperiment('test')
# Replace with your own folder containing .frd files !!! The .frd files can be exported from the Octet software
files = ['230309_00'+str(x+1)+'.frd' for x in range(8)]
files = [folder + file for file in files]
files.sort()
bli.read_sensor_data(files)
bli.align_association(bli.sensor_names)
bli.align_dissociation(bli.sensor_names)
# We use the sensor #8 as the reference sensor for baseline correction. Remember than python indexing starts at 0.
bli.subtraction(bli.sensor_names[:7], bli.sensor_names[7])
pyKinetics = KineticsAnalyzer()
pyKinetics.add_experiment(bli, 'test')
labels = pyKinetics.get_experiment_properties('sensor_names')
ids = pyKinetics.get_experiment_properties('sensor_names_unique')
# Flatten the lists
labels = [item for sublist in labels for item in sublist]
ids = [item for sublist in ids for item in sublist]
df = get_plotting_df(ids, labels)
figure = plot_traces_all(pyKinetics,df)
figure.write_image('test_bli_traces.png')
pyKinetics.merge_ligand_conc_df()
pyKinetics.init_fittings()
pyKinetics.generate_fittings(pyKinetics.combined_ligand_conc_df)
fig = plot_association_dissociation(pyKinetics,split_by_smax_id=True)
fig.write_image('test_bli.png')
pyKinetics.submit_steady_state_fitting()
pyKinetics.submit_kinetics_fitting()
fig = plot_association_dissociation(pyKinetics)
fig.write_image('test_bli_fitted.png')Contributions are welcome! Please contact me at oburastero@embl-hamburg.de
If you use pyKinGenie, please cite it as:
Burastero, O. (2026). pyKinGenie (Version 1.0) [Computer software].
GitHub. https://github.com/osvalB/pykingenie
@software{burastero_2026_pykingenie,
author = {Burastero, Osvaldo},
title = {pykingenie},
version = {1.0},
year = {2026},
url = {https://github.com/osvalB/pykingenie}
}This project is licensed under the MIT License - see the LICENSE file for details.