Cytiva Biacore .blr
The Biacore T200 Control Software saves surface plasmon resonance runs as .blr result files, and the T200 Evaluation Software saves .bme evaluation files. OpenReadout returns every stored sensorgram, the report points, cycles and event log, and from .bme files the fits of the evaluation items.
Derived from public result files of two depositors (Control Software 2.0.1 and 2.0.2), the control software’s own report points inside each file, and allotropy’s output (MIT, black box). Provenance: docs/provenance/cytiva-biacore.md. Crate: openreadout-biophys.
| format id | files | reads | confidence |
|---|---|---|---|
cytiva-biacore-bme |
.bme evaluation files of the Biacore T200 Evaluation Software 3.0 |
the result file(s) it holds, read as a .blr, and every fit of its evaluation items (model, parameters with standard errors, Chi², the curves fitted) |
evidence rubric |
cytiva-biacore-blr |
.blr result files of the Biacore T200 Control Software |
every stored sensorgram (raw flow cells and reference-subtracted curves, per cycle), the report points, cycles and event log, chip, instrument, software and run times | medium (evidence rubric, docs/assurance.md) |
Not read: Biacore evaluation files other than .bme (.bie), Biacore Insight and 8K result files, older
BIAevaluation files, wizard templates (.bwKin, .bwImmob). Kinetic and
affinity fits (ka, kd, KD, Rmax) are the evaluation software’s and are not in result files.
Layout
A compound file (MS-CFB). Streams read:
| stream | content | our reading |
|---|---|---|
\x03BIA compability info |
FileType=Result File, FileTypeVersion=12 |
detection: a compound file with this stream saying Result File is a Biacore result file |
Environment |
key=value text: application, version, run type, processing unit, instrument id, user, Timestamp, EndTime (OLE dates: days since 1899-12-30, local time) |
instrument, software, method name, operator, start, end |
Chip, FileTag, AppData/Bioconf |
key=value text: chip type and id, IFC, flow cells, ligand and level per flow cell; concentration unit; instrument configuration |
vendor tree; flow-cell count |
RPoint Table |
tab-separated text, a header line: Cycle, Fc, Aprog, DiodeRow, Time, Window, AbsResp, SD, Slope, LRSD, Quality, Baseline, RelResp, Id, Min, Max, then the run’s keyword columns |
table report_points as written |
_Cycle N/EventLog |
a count line, then F<ms>;<code>;<arguments> |
table event_log (codes not interpreted); code 10’s d<OLE date> is the cycle’s start |
_Cycle N/_Window N/Properties |
Caption=, Title= |
the window caption |
_Cycle N/_Window N/_Curve N/Labels |
lines: title (Sensorgram Fc=3, Subtracted Fc=4-3), x name, x unit (s), y name (Response, Resp. Diff.), y unit (RU) |
curve name, flow cell, units |
…/_Curve N/\x03Keywords |
key=value: cycle type, assay step, sample, concentration, molecular weight, Temp#, buffer, Fc, DiodeRow |
trace extra.keywords; the cycles table |
…/_Curve N/\x03RPoints |
a line, then time\twindow\tflag\tname per report point |
trace extra.report_points |
…/_Curve N/Segment 1 |
u32 1, u32 1, f64 step (s), f64 start (s), f64 0, f64 1, u32 n, n × f32 response | raw flow-cell sensorgram on a regular grid |
…/_Curve N/XYData |
u32 1, u32 1, u32 n, n × f32 time (s), n × f32 response | reference-subtracted sensorgram |
Every curve seen has exactly one of Segment 1 or XYData; stream sizes are exactly 44 + 4n and
12 + 8n. The segment’s two time fields are equal in every file (0.1 s at 10 Hz, 1 s at 1 Hz), so
which one is the step and which the start is not determined: a curve where they differ is refused
(unvalidated_time_base), as are further segments, headers other than (1, 1), a non-identity
0/1 pair, or an x axis not in seconds. Quality, TimeCorrection, UniqueId, APoints,
Attributes, AppData/Dip, AppData/ApplicationTemplate and AppData/ApplicationMethod are
listed by info --view structure, not interpreted.
Evaluation files (.bme)
The compatibility stream says FileType=T200 Evaluation File (FileTypeVersion=4), and each
reader leaves the other kind to the other reader (detection by content). The evaluation software
copies each result file it uses under _DataManager N/ (its Environment, Chip, FileTag,
AppData/…, Evaluation (the result file’s name and size) and the _Cycle N/_Window N/_Curve N
storages, laid out as above), and writes its own Environment at the root (application
Biacore T200 Evaluation Software, version, user). DataManager lists the keyword names and the
cycle count. The run facts come from _DataManager 1/Environment; the evaluation environment is
in vendor.biacore.evaluation_environment. Traces carry extra.file (N); with more than one
result file their names start file N, and the cycles table has a file column.
Evaluation/EvaluationItemN are XML documents (ISO-8859-1) whose root has a ClassName
(ReportPointTable, Plot, Sensorgram, AffinityScreen, KineticScreen, KineticsAffinity,
ConcentrationAnalysis) and a Name; EvaluationItemNBinary holds the float32 curves the
evaluation processed (not read). Fits take one of two layouts:
modelFits/modelFits/modelFit(screens): amodelelement (ModelNameattribute), the fit’s owncurveSet/CurveSet, akey(fileNumber,sampleName,temperature,ligandName,curveName) and afitStatus;Fits/FitN(KineticsAffinity):FitNhas theModelNameattribute and shares the item’sCurveSet.
The model element holds Model (the expression, Conc*Rmax/(Conc+KD)+offset for steady-state
affinity), Chi2, Parameters (id:name|value|standard error separated by ;, where the id
may hold a second :, 0:1-32:ka) and ReportParameters (KD (M)|KD: the unit of each
parameter). A CurveSet has SampleName, LigandName, Temperature and SubsetN with a
CurveName (Fc=2-1) and CurveN: FileIndex, CycleNumber, SampleName, ConcUnit,
Injections/Injection (Concentration, MolarConcentration, Response) and, in screens,
Included.
Tables after the event log: evaluation_items (item, class, name, fits), fits (fit, item,
item name, model, sample, ligand, curve(s), temperature, Chi², status, number of curves, then per
parameter name its first value and <name>_se with the unit ReportParameters gives: KD in M,
ka in 1/Ms, kd in 1/s, Rmax in RU, …), fit_parameters (every parameter with its scope,
value, standard error and unit) and fit_points (per fit and curve: curve name, file, cycle,
sample, molar concentration, the concentration as entered with its unit, the response the fit
used, included 1/0 or NaN when not stored). Values are the evaluation software’s; nothing is
refitted.
What the reader returns
- One trace per stored curve, in cycle / window / curve order, named
cycle <n> <title>(cycle 2 Sensorgram Fc=3,cycle 2 Subtracted Fc=4-3): one channelresponse(RU, float32 values as stored);sample_rate_hzandstart_sgive the time since the cycle’s start (extra.axis= time in s). A subtracted curve whose float32 times are not a regular grid (none seen) carries them as channel 0time.extra:kind=sensorgram,cycle,window,curve,window_caption,title,response(the y name),flow_cell(3,4-3),reference_subtracted,keywords,report_points(time, window, flag, name),storage. - Table
report_points(when the file has report points): theRPoint Tablecolumns in order; numeric columns as numbers (N/Aand blanks as NaN), the others (Fc,Aprog,Quality,Baseline,Id, text keywords) as categories. Units:Time,Windows;AbsResp,RelResp,SD,Min,MaxRU;SlopeRU/s. - Table
cycles:cycle,window_caption,start(s after the run’sTimestamp, from the event log),curves, then the keywords of the cycle’s first curve (sample, concentration, molecular weight, assay step, …). - Table
event_log:cycle,time(s),code,arguments— as recorded, not interpreted. - Experiment: instrument vendor Cytiva (Biacore), model from the processing unit (
BiacoreT200→Biacore T200), serial = instrument id, kind surface plasmon resonance instrument (OBI:0001136), software and version; method name = run type (Kinetics/Affinity,Immobilization,Manual Run), technique surface plasmon resonance spectroscopy (CHMO:0000624), parameterstemperature(°C, when every curve’sTemp#agrees),flow_cells,cycles; acquisitionstarted_at/ended_at(local time without a zone),operator,duration_s. - Vendor tree
biacore:application,compatibility,environment,chip,file_tag,instrument_configuration. check: header and size checks per curve (left-out curves are findings), every curve read, non-finite values, compound-file problems.
Validation
cargo test -p openreadout-corpus-tests --features corpus (tests/biacore_oracle/mod.rs,
oracle/biacore_oracle.py):
- In the six files stored at 10 Hz, every report point the control software wrote (1,224 over raw and subtracted curves) equals the mean of the reader’s sensorgram over the closed window [Time − Window/2, Time + Window/2] to 1e-6 RU (observed 5e-11): this fixes the time base and the values of both curve kinds. In the three 1 Hz files the software averaged data the file does not keep; its report points lie within the window’s spread of the stored samples.
- allotropy’s sensorgram cubes (all curves of the first 12 cycles): the same curves per cycle and flow cell, lengths, and times and responses at 64 samples each.
- Instrument id, software and version, model, user, run type, cycle and flow-cell counts and chip
id equal the file’s
EnvironmentandChiptext and allotropy’s.
Two depositors only, so no file is held out.
Evaluation files. Six .bme files of two depositors (allotropy’s test data, MIT; the SGC
Toronto USP5 series, CC-BY-4.0): every curve of the first 12 cycles equals allotropy’s evaluation
parser (black box, 84 curves per file), and every fit (174 fits, 1,968 cells: sample, curves,
model, Chi², number of curves, each parameter’s value and standard error) equals the oracle’s own
parse of the item XML (oracle/biacore_oracle.py); a refit of the steady-state model to the
stored concentrations and responses reproduces the stored KD within 1 % for 97 of 108
steady-state fits (the others are fits the software itself left unconstrained, KD far above the
highest concentration). One lab (Harvard Dataverse doi:10.7910/DVN/GTNOTI) is held out.
Vocabulary (public API of openreadout-biophys, Biacore)
| identifier | meaning |
|---|---|
BiacoreReader |
reader of Cytiva Biacore .blr result files |
BiacoreEvaluationReader |
reader of Biacore T200 .bme evaluation files |
BIACORE_BME_FORMAT_ID, BME_FORMAT_ID |
cytiva-biacore-bme |
Kind { Result, Evaluation }, kind_of |
the file kind the compatibility stream names |
Evaluation, evaluation, evaluation_tables, first_param, texts, multi_file, result_prefixes, MAX_ITEM |
evaluation-file content and its tables |
EvalItem, index, class, name, fits |
an evaluation item |
Fit, item, item_name, model, expression, chi2, sample, ligand, temperature, curves, status, params, units, points |
a fit |
Param, scope, value, se |
a fit parameter |
FitPoint, subset, file, cycle, concentration, concentration_stated, unit, response, included |
a curve of a fit |
parse_item, parse_parameters, parse_units |
item XML parsing |
BIACORE_FORMAT_ID |
cytiva-biacore-blr |
BiacoreDataset |
the dataset the reader returns |
How this reader was derived, file by file: provenance log.