Human instructions#73
Open
Gonza10V wants to merge 134 commits into
Open
Conversation
Updated the assemblies loop to have less code, condensed and redid how we added to the sets
Luke Dysart Update to bug with assembly after attempted push
Luke update to run_sbol2 assembly, working on push in git
Refactored `assembly.py` to support advanced parameter merging via JS…
…rator improvements
transformation.py:
- Introduce self.plasmid_name_to_wells (name → [well_obj, ...]) populated at
load time, replacing all positional/enumeration-based DNA well lookups
- Introduce self.location_replicates derived from plasmid_locations, unifying
96-well plate and temp module code paths into a single loop structure
- Rewrite _transfer_competent_cells with sequential well_index counter and
per-chassis chassis_reaction_count dict for correct tube selection across
multiple chassis types
- Rewrite _transfer_DNA as a unified single method with no plate/temp module
branching; uses self.transformations as ground truth throughout
- _load_dna_into_dna_plate / _load_dna_into_temp_module now populate
plasmid_name_to_wells instead of returning DNA_wells
- _load_reagents_96plate / _load_reagents_temp_module return 2-tuple;
_validate_protocol accounts for location_replicates in reaction counts
- Add strain as first entry in dict_of_parts_in_thermocycler per well
- Rewrite Transformation base class docstring to match current parameters;
add comprehensive HeatShockTransformation docstring for all subclass params
generate_protocol.py:
- Add generate_param_reference() to append a commented parameter table and
full docstrings to every generated protocol for last-minute editing
- Add --plasmid-locations CLI flag and plasmid_locations support throughout
- Raise line-length threshold from 80 to 100 for single-line list formatting
- Improve transformation protocol auto-detection for bare list format
assembly.py:
- Initialize self.product_uri_to_wells = {}
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…ta` format and inlined advanced parameters for improved clarity and consistency.
Replace per-well liquid_transfer() calls (one tip per destination) with distribute() batched by consecutive source tube using groupby. Tips are now reused within each source tube block — one pickup per tube — matching the original main branch pattern while supporting multi-chassis workflows. Cross-chassis contamination is prevented by the source well identity enforced by groupby. Also moves itertools.groupby to module-level import and sets mix_before=(3, 50) consistent with main branch.
_validate_protocol now checks that all plasmids referenced in the protocol have the same number of wells in plasmid_locations before setting location_replicates, preventing IndexError or silent undercounting when the JSON has uneven well-list lengths. Also adds tests/test_transformation.py with 16 unit tests covering transformation data parsing edge cases and _validate_protocol validation, including the P2 inconsistent replicate count scenario.
Both classes only populated dna_list_for_transformation_protocol, leaving product_uri_to_wells empty and causing _export_transformation_input to write an empty JSON for non-SBOL assembly runs. Now mirrors the same tracking logic already present in SBOLLoopAssembly, using the construct name as the key in place of a URI.
… protocol Allows users to set the starting tip well for each pipette, consistent with the same feature already present in plating.py. Defaults to None (starts from first available tip). Also extends test_transformation.py with 9 new tests covering attribute wiring and starting_tip assignment logic for both pipettes.
…ly-class-for-markdown-protocol-generation Add ManualAssembly to render Golden Gate manual protocols as Markdown
Removed outdated notes and updated instructions for thermocycler iterations and DNA part concentrations.
Guard against two different URIs (e.g. plasmid_1/1 and plasmid_1/2) extracting to the same short name, which would cause silent wrong-well lookups in _load_dna_into_dna_plate. Shared URIs across transformations (same plasmid used in multiple strains) remain valid. Adds three new tests covering the shared-URI pass case and both plasmid/chassis collision error cases.
The else branch in _validate_protocol was checking only raw reagent counts against module_wells. Since _load_reagents_temp_module starts DNA at initial_dna_well (not well 0), a non-zero offset can push the last reagent past the 24-well block even when raw counts pass. Added self.initial_dna_well to the sum and the error message. Two new tests cover the overflow and the within-capacity cases.
Opentrons switched from the legacy protocol core to the Protocol Engine at apiLevel 2.14. The legacy core tries to load module definitions from opentrons_shared_data/data/module/definitions/3/ which no longer ships with the installed version of opentrons_shared_data, causing a FileNotFoundError on every script below 2.14 that loads a temperature module. Bumping Automated_Golden_Gate.py (2.10) and the three libre scripts (2.13) to 2.14 routes them through the Protocol Engine and resolves all four CI failures.
Previously cells and media shared the 24-well aluminum block with DNA plasmids, limiting the number of unique constructs per run. Now they load onto a separate opentrons_24_tuberack_eppendorf_1.5ml_safelock_snapcap (default slot 3), freeing the entire block for plasmids. Changes: - Add tube_rack_labware / tube_rack_position params wired through the full kwargs → valid_params → attribute hierarchy - _validate_protocol(tube_rack=None): tube rack capacity checked for cells+media; alumblock checked for plasmids-only (temp module path) - _load_reagents gains tracking_dict param so cells/media populate dict_of_parts_in_tube_rack rather than dict_of_parts_in_temp_mod_position - _load_reagents_96plate and _load_reagents_temp_module both route cells/media to tube_rack at well 0 - Updated test suite: _run_validate passes a tube_rack mock, overflow test uses 25 plasmids, new tube_rack overflow test, offset test updated to reflect plasmids-only alumblock check
Refactor HeatShockTransformation transfer logic and add protocol generator improvements
…ssembly-protocol-script Improve ManualAssembly markdown protocol formatting and links
…-into-subfolders Reorganize scripts into manual/automated_ot2/libre and split simulator vs manual tests
scripts/manual/manual_assembly_protocol.md is produced at runtime by generate_manual_assembly_protocol.py and should not be committed. Add scripts/manual/*.md to .gitignore so future runs don't accidentally re-track it.
All three generate_manual_*.py scripts had default --input/--output paths pointing to scripts/ instead of scripts/manual/ after the directory reorganisation. Updated defaults so scripts run correctly from repo root without arguments. Added manual_plating_input.json and manual_transformation_input.json as example inputs for the plating and transformation generators, mirroring the GFP/RFP constructs already present in manual_assembly_input.json.
- ManualPlating: read replicates, number_dilutions, and volume params from plating_data so JSON-driven runs reflect the input file rather than silently falling back to constructor defaults - ManualAssembly: remove hard-coded cycles from default Digest/Ligate profile entries so thermocycling_cycles actually takes effect at render time (the fallback logic in the renderer was already correct) - .gitignore: add scripts/manual/*.md to cover generated protocol output files (this entry was edited locally but not staged in the earlier commit)
Replace the hard-coded cycle count assertion with an explicit variable so the test documents the pass-through behaviour rather than pinning the old default value that was removed in the previous fix.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.