Scrub codebase to harden well name (e.g. 'A1') generation/use code that cannot handle >26 rows
- Dominant language
- Python
- Stars
- 2
- Forks
- 15
- PR merge metrics
- No merged PRs in 30d
Description
Current plates used in the lab (96-well and 384-well) have fewer than 26 rows, so row letters in well names can be created just by incrementing the ascii character code, and well names can be parsed assuming that the row letter will be a single letter. However, plates with >26 rows exist (e.g., 1536-well plates have 32 rows and 48 columns, and name their rows past Z with the convention AA, AB, etc).
Unfortunately, code to generate and use well names exists in multiple locations in the codebase, and in most cases does NOT have any handing for this case, which could lead to garbage outputs if larger plates were ever introduced. Here are the relevant snippets I already know of, but there may be more:
https://github.com/jdereus/labman/blob/645c798e0094e9962973c2d111c4860b1e8e5b23/labcontrol/db/container.py#L269-L279
https://github.com/jdereus/labman/blob/7bb9106555143bb4877c49516e92c792ea9349a5/labcontrol/db/process.py#L1828-L1861
https://github.com/jdereus/labman/blob/1e63dc52bfc1d5a8d6b0d54fea1465ef73c37679/labcontrol/db/process.py#L3719-L3726
(The one above is in `_generate_amplicon_prep_information`, but very shortly there will probably be a clone of the same code in the new `_generate_metagenomics_prep_information`)
AFAIK, the only well-name-related code that currently catches the >26-row case (thanks to @wasade for an excellent code review!) is
https://github.com/jdereus/labman/blob/1e63dc52bfc1d5a8d6b0d54fea1465ef73c37679/labcontrol/db/process.py#L2531-L2537
... although note that it still can't generate correct row letters for rows past 26; it will just refuse to output garbage.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.