Centralize and harden identification of pool component types
@charles-cowart is already working on this.
Since Jul 20, 2019.
Assessment
This issue has not been assessed yet.
Description
There are a number of places in the code where what we do depends on what kind of inputs were put into a particular pool (for example, is the pool in question an amplicon plate pool, where the inputs are 16s library prep compositions? or is it an amplicon sequencing plate, where the inputs are (amplicon plate) pool compositions? or is it a shotgun plate pool, where the inputs are shotgun library prep compositions?) Unfortunately, the checking for this information has been implemented in several different ways in several different places, and not always robustly. This should be centralized and hardened. This work absolutely MUST be done before we add support for any new protocols to the software!
Here are locations I know about that examine pool components and make decisions based on what they find:
- PoolComposition.get_components_type
https://github.com/jdereus/labman/blob/a5308e9c26a0344fd30e1c0c5e50c9a7d212fbef/labcontrol/db/composition.py#L1070-L1087
Used in PoolingProcess.generate_pool_file
Note that the get_components_type method only checks the first component in a pool but has a check in place to make sure it errors if there is more than one kind of component in a pool (see #267 ).
- SequencingProcess.create
This code ALSO only checks the first component in a pool, but unlike get_component_type, lacks a check to ensure that there is not more than one component type per pool, which led to issue #498 (which has been fixed by making it not possible to create such a pool through the interface anymore but not by correcting this code). Looks like the code here should probably actually use get_component_type instead of doing its own check.
- util.py's get_pools_listing
This is used by PoolListHandler.get:
This one is not like the others in that it is looking at the pool component compositions' description strings to determine their types instead of looking at the pool component compositions' object type. I believe this is not for an intentional reason but just because it was written at a different time than the other approaches.
- Dominant language
- Python
- Stars
- 2
- Forks
- 15
- PR merge metrics
- No merged PRs in 30d
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from biocore/LabControl
-
bug front-end question
Difficulty 4/5 3-5 days Newbie friendliness 30/100
biocore/LabControl#594 ·
-
front-end question
Difficulty 5/5 Over a week Newbie friendliness 35/100
biocore/LabControl#593 ·
-
Cache list of active samples when the active study is changed in the plating interfaceMay be free again @fedarko claimed this 2579 days ago, and no pull request is open. Openfront-end
biocore/LabControl#592 · 1 assignee ·
-
code refactor front-end
Difficulty 5/5 Over a week Newbie friendliness 25/100
biocore/LabControl#591 ·
-
priority:low
Difficulty 3/5 1-2 days Newbie friendliness 20/100
biocore/LabControl#590 ·
All issues in biocore/LabControl
Similar issues
-
bug frontend
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
PedestrianDynamics/pyFDS-Evac#552 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
resend/resend-skills#144 ·
Maintainers usually reply within 1 day
-
good first issue
Difficulty 1/5 Under an hour Newbie friendliness 68/100
-
Bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
GNS3/gns3-server#2935 · 1 comment ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
TauricResearch/TradingAgents#1476 ·
Maintainers usually reply within 2 days