Skip to content

Human instructions#73

Open
Gonza10V wants to merge 134 commits into
RudgeLab:mainfrom
MyersResearchGroup:human_instructions
Open

Human instructions#73
Gonza10V wants to merge 134 commits into
RudgeLab:mainfrom
MyersResearchGroup:human_instructions

Conversation

@Gonza10V
Copy link
Copy Markdown
Collaborator

@Gonza10V Gonza10V commented Apr 8, 2026

No description provided.

Gonza10V and others added 30 commits January 16, 2026 14:22
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants