Repository navigation
Releases: Nataniel0212/rosetta-eclab
Release list
0.1.7
pip install --upgrade rosetta-eclab
A missing harmonic is named again when several columns are unknown
- 0.1.6 stopped name elimination from giving every unknown column the name of the one missing sibling. That also lost the right answer: in 12 public impedance and MB files, the real
|Ece h7|got ABSTAIN (7) or the wrong namePwe(5). - Now a missing harmonic goes to the one unknown column with the storage type EC-Lab uses for it and the sign and scale of its numbered siblings (
|Ece h2|…|Ece h6|for|Ece h7|). It goes to no column in these cases:- fewer than two of its numbered siblings have data;
- a second column fits, or the only one that fits is constant or a copy of a known column;
- the siblings disagree on a scale;
- another harmonic of a family the file holds is missing too;
- the reader is not sure where the columns end.
- In all 12 of those files,
|Ece h7|is named right, at confidence 0.9. On the 36 public files with columns galvani does not know, names that differ from the answer key fall from 17 to 12, and no other answer changes. - Replays through Rosetta's reader gave two to five known columns of the public files new IDs: 81,718 cases with a missing harmonic. The rule named the harmonic right in 70,934 and never gave its name to a wrong column.
- Gaps whose siblings differ in a word, such as
THD Ecenext toTHD EweandNSD Ece, are not filled by elimination when several columns are unknown. Those siblings are other quantities, and their size says too little. - This is not a blind result. The rule was designed on those 12 files, and its failures were found and fixed on the same files and replays. Details are in
results/open_runs.md.
The reader tries every split of the record
- With several unknown columns, the reader tried only the first 200 ways to split the unexplained bytes into columns. It now tries all of them. A public file with 8 unknown columns reads in a second or two instead of about 100 s.
- Among the splits nearly as plausible as the best, it takes the one that leaves the most known columns readable as their own type. It notes when another split would read more of them.
- All 932 distinct public files decode exactly as before.
- In recoded copies of public files with two or three unknown columns, 1,744 that were split wrong are now split right: 829 among 6,260 recodings of test files and 915 among 40,509 of hold-out files. In those recodings, none that was split right is split wrong, and 881 are still split wrong.
- With six or more unknown columns, a split that the old search never tried can look more plausible than the right one. In one reviewer's search of 14,289 recodings with 6 to 8 unknown columns, 4,991 decoded better than in 0.1.6 and 20 worse, comparing every column's values. Across all their runs, reviewers found 45 distinct recodings that 0.1.6 decoded right and the reader now decodes wrong, all with 6 to 8 unknown columns.
- Corrupt columns can also mislead the reader. In copies of the one public file with corrupt harmonic columns, reviewers found 10 recodings, with 3 to 7 unknown columns, that 0.1.6 split right and the reader now splits wrong.
Unchanged
- With one unknown column, and in
--self-checkon every public file, every answer is the same as in 0.1.6. Golden: 1527 answers, 0 differences. The every-column sweep is identical. - Eight tests were added.
Rosetta 0.1.6
pip install --upgrade rosetta-eclab
Fix: a missing current is named I, not Ece
- In the public files, impedance records and records with a potential set point hold the measured current
I(202/202 and 319/320 distinct files). Where such a file names no current and only one column is missing, Rosetta now names a moving columnI. - Outside impedance records this applies only to files without a
dq,(Q-Qo)orPwecolumn; with one, the current is checked by formula as before. A column whose size follows the time step is not namedI: it may be the per-point chargedq, as in the one exception (galvani'sbio_logic4.mpr). Eceis ruled out there. It is also ruled out in impedance records without a counter-electrode impedance quantity: all 25 public impedance records withEcehave one.- If the column can be that missing current but
Idoes not fit, Rosetta abstains instead of giving another name. - galvani knows the current in every public file, so outside
--self-checkthis matters only if a format change hides it. TheEcerules also apply to a genuinely unknown column when it is the only one.
Fix: several unknown columns no longer all get the same name
- With more than one unknown column, name elimination gave every one of them the name of the one missing sibling. In 12 recent public files with impedance steps, 47 unknown columns (THD, NSD and NSR
Ece, energy columns and the real|Ece h7|) were all named|Ece h7|at confidence 0.9, and--self-checkon them answered|Ece h7|for 361 of 594 hidden columns. 0.1.5 does the same. - Rules that infer a column from what the file lacks (name elimination, a single missing sibling, the missing current, the
(Q-Qo)veto) now apply only when one column is unknown. In--self-check, elimination still names the slot that hiding a column opens, but never a gap the whole file already has. - On the 36 public files with columns galvani does not know, names that differ from the answer key fall from 43 to 17, and
--self-checknames 603 columns correctly instead of 325, with 90 wrong names instead of 502. The cost: of the 12 right|Ece h7|answers, 7 now get ABSTAIN and 5 get a wrong name (Pwe) from the statistics vote, at confidence 0.30–0.42.
Found on hold-out 7
- With every column hidden in turn,
<I>was the most common miss: it was namedEce31 times and got ABSTAIN 47 times. - With the fix, hiding every column of the 880 distinct public files in turn (constant and duplicate columns skipped) gives 96.2 % correct and 108 wrong names, against 94.7 % and 151 before. Every change is a current now named correctly.
- Hold-out 7 had already been used once, so this is not a blind result. Details are in
results/open_runs.md.
Also in this release
- The statistics vote may not name
(Q-Qo)where the file holds no current (I,dqorPwe). All 694 distinct public files with(Q-Qo)hold one of them. - Hold-out 7 has 594 files from 221 openly licensed records in 24 repositories. It was frozen before the run, and each arm was run once:
- Rosetta named 156/193 columns, with 14 wrong names and 1/19 decoys named.
- Opus 5.5 named 176/193, with 13 wrong and 5/19.
pytest testsworks in a fresh clone, and counts in the README and documents were corrected.
The golden check now covers 1527 answers, 334 of them new from hold-out 7. Against 0.1.5, nine answers differ, all now right: 7 currents named I, and the out-of-vocabulary <I> decoys of hold-outs 6 and 7 now get ABSTAIN. Six tests were added.
Rosetta 0.1.5
pip install --upgrade rosetta-eclab
Fix: a current is no longer ruled out by a potential set point
- In CV and LSV the control column (
control_V) holds the programmed potential. Rosetta still tested whether a hidden current followed it. The test failed, so the column could not be namedIeven when everything else pointed to a current, and Rosetta abstained. - The relation is now tested only when the control column's unit allows a current. The mirror case is fixed too:
Eweis no longer tested against a current-only control (control_I).
Found on a sixth hold-out
- Hold-out 6 is the 57 older EC-Lab files (data module version 0) that 0.1.4 made readable. It was frozen before the run, and Rosetta 0.1.4 was run once: 16/20 named correctly, 1 wrong name, 2/16 decoys named. Every miss was the current
<I>. - With this fix a rerun scores 19/20. That rerun is not a blind result, because the fix was found on these files.
- The remaining miss, and both named decoys, come from the statistics vote naming
(Q-Qo)in files that hold no current or charge to check against. - Details are in
results/open_runs.md.
Smaller
python -m namer.evaluateno longer overwrites an official hold-out run. Reruns take--label.
The golden check now covers hold-out 6 as well: 1193 answers. Three changed, all from abstaining to the correct I. One test was added.
Rosetta 0.1.4
pip install --upgrade rosetta-eclab
New: older EC-Lab files (data module version 0)
- Rosetta now reads
.mprfiles with data module version 0, which older EC-Lab versions wrote. Earlier versions stopped with "data module version 0 is not supported yet". yadg 7.0.1 cannot read these files either. - The offsets follow galvani. All 59 public version-0 files decode byte for byte as galvani 0.5.0 decodes them, and the two with an EC-Lab
.mptexport match it. galvani's second version-0 layout was checked on a synthetic file. - With
--reference yadg, a version-0 file gets a note that yadg cannot open it at all. - These files carry no technique that Rosetta reads, so the namer works without one.
Fix: power stored as a magnitude
- Some older files store the power as |Ewe·I|. When that column was hidden, Rosetta named it
Ece, which is wrong. It now names itPwe(relation |Ewe*I|, r² 1.0000, scale 0.001 W per V·mA).
Smaller
- A file with no data points now says so instead of reporting a record-size error.
No earlier answer changed: the golden check covers 1149 answers with 0 differences. One answer's confidence rose and some "also considered" lists changed. Three tests were added, and a clean install was tested without galvani.
Rosetta 0.1.3
pip install --upgrade rosetta-eclab
Fix: installing Rosetta could undo the galvani fix
- Rosetta 0.1.2 and earlier required
galvani==0.5.0. datalab-org-galvani installs the same modulegalvani, so installing Rosetta after it put galvani 0.5.0 back over the fixed files. Without any warning, your galvani then read column IDs as single bytes again. - Rosetta no longer installs galvani:
- With galvani or datalab-org-galvani installed, "unknown to galvani" means unknown to the galvani you actually have.
- With neither installed, Rosetta uses a frozen copy of galvani 0.5.0's column map and says so.
- The low-byte note ("misreads 471 as 215") appears only when the installed galvani reads column IDs that way. Rosetta checks galvani's own code for this rather than its version number. With datalab-org-galvani 0.6.0 the note does not appear.
- The names Rosetta gives no longer depend on which galvani is installed. The expected storage types and the benchmarks use the frozen 0.5.0 map.
Tested in clean environments with no galvani, galvani 0.5.0 and datalab-org-galvani 0.6.0. No answer changed: the golden check covers 1149 answers with 0 differences. Three tests were added.
Rosetta 0.1.2
pip install --upgrade rosetta-eclab
Clearer output when galvani misreads column IDs
- In EC-Lab 11.50+ files, galvani 0.5.0 reads only the low byte of each column ID. IDs of 256 and above become other IDs, so 471 (
<Ece>/V) is read as 215 and galvani stops with "Column ID 215 … is unknown". Rosetta now names the IDs that galvani misreads (for example "misreads 471 as 215"). Before, it said only that there was nothing to name. - The README has a new section for anyone who arrives from that galvani error. The fix is in datalab-org-galvani 0.6.0 (galvani-mirror#11).
- Of the 106 public 11.50+ files in the benchmark corpus, galvani 0.5.0 stops on 11. In 9 of those 11, every column is already in galvani's own map.
Other
--self-checknow reports how many columns abstained.
No answer changed: the golden check covers 1149 answers on the five hold-outs and the v2 benchmark, with 0 differences. One regression test was added.
Rosetta 0.1.1
First release on PyPI: pip install rosetta-eclab.
Fixes (found by running Rosetta on files attached to parser issues)
- A potential sitting on a CV set point in CC-CV cycling files was named as a current. With a mixed
control/V/mAcolumn, that evidence now also needs the column to pass the current-unit check. Ewe-Eceis now named from Ewe − Ece. This counts only where subtracting Ece explains the column clearly better than Ewe alone.
No answer changed on the five hold-outs or the v2 benchmark. Regression tests were added for both cases.
Packaging
- Installs as
rosetta_eclab, because a package callednameralready exists on PyPI. Therosettacommand is unchanged. In the repository, everypython -m namer.*command still works. - Published from GitHub Actions with PyPI trusted publishing.
Rosetta 0.1.0
First public release.
Rosetta names the columns of BioLogic EC-Lab .mpr files that your parser does not know, shows the evidence for each answer, and abstains when the data cannot support a name. No language model, no network.
rosetta FILE.mprnames every column unknown to galvani (or yadg with--reference yadg)--self-checkhides each known column in turn and reports how many come back right- On five frozen hold-outs of public EC-Lab files: 350/373 real columns named correctly, 5 wrong names, 11/95 decoys named
See the README for install and use, and docs/history.md for how the project got here.