Skip to content

Releases: Nataniel0212/rosetta-eclab

0.1.7

Choose a tag to compare

@Nataniel0212 Nataniel0212 released this 29 Oct 13:14

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 name Pwe (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 Ece next to THD Ewe and NSD 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-check on 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

Choose a tag to compare

@Nataniel0212 Nataniel0212 released this 28 Oct 16:00

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 column I.
  • Outside impedance records this applies only to files without a dq, (Q-Qo) or Pwe column; with one, the current is checked by formula as before. A column whose size follows the time step is not named I: it may be the per-point charge dq, as in the one exception (galvani's bio_logic4.mpr).
  • Ece is ruled out there. It is also ruled out in impedance records without a counter-electrode impedance quantity: all 25 public impedance records with Ece have one.
  • If the column can be that missing current but I does not fit, Rosetta abstains instead of giving another name.
  • galvani knows the current in every public file, so outside --self-check this matters only if a format change hides it. The Ece rules 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-check on 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-check names 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 named Ece 31 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, dq or Pwe). 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 tests works 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

Choose a tag to compare

@Nataniel0212 Nataniel0212 released this 27 Oct 00:17

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 named I even 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: Ewe is 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.evaluate no 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

Choose a tag to compare

@Nataniel0212 Nataniel0212 released this 26 Oct 23:20

pip install --upgrade rosetta-eclab

New: older EC-Lab files (data module version 0)

  • Rosetta now reads .mpr files 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 .mpt export 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 it Pwe (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

Choose a tag to compare

@Nataniel0212 Nataniel0212 released this 23 Oct 16:00

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 module galvani, 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

Choose a tag to compare

@Nataniel0212 Nataniel0212 released this 23 Oct 15:12

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-check now 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

Choose a tag to compare

@Nataniel0212 Nataniel0212 released this 16 Oct 08:34

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/mA column, that evidence now also needs the column to pass the current-unit check.
  • Ewe-Ece is 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 called namer already exists on PyPI. The rosetta command is unchanged. In the repository, every python -m namer.* command still works.
  • Published from GitHub Actions with PyPI trusted publishing.

Rosetta 0.1.0

Choose a tag to compare

@Nataniel0212 Nataniel0212 released this 16 Oct 06:54

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.mpr names every column unknown to galvani (or yadg with --reference yadg)
  • --self-check hides 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.