pudu.transformation

Classes for automated and manual bacterial heat-shock transformation.

  • HeatShockTransformation — OT-2 protocol that loads DNA and competent cells into a thermocycler plate, runs the heat-shock cycle, adds recovery media, and exports a plating map.

  • ManualTransformation — generates a human-readable Markdown bench protocol.

Both classes accept SBOL-style transformation data of the form:

[
    {
        "Strain":   "https://SBOL2Build.org/strain_GFP/1",
        "Chassis":  "https://sbolcanvas.org/DH5alpha/1",
        "Plasmids": ["https://SBOL2Build.org/composite_1/1"]
    }
]
class pudu.transformation.Transformation(transformation_data=None, plasmid_locations=None, json_params=None, volume_dna=20, replicates=2, thermocycler_starting_well=0, thermocycler_labware='nest_96_wellplate_100ul_pcr_full_skirt', temperature_module_labware='opentrons_24_aluminumblock_nest_1.5ml_snapcap', temperature_module_position='1', dna_plate='nest_96_wellplate_100ul_pcr_full_skirt', dna_plate_position='2', use_dna_96plate=False, tiprack_p20_labware='opentrons_96_tiprack_20ul', tiprack_p20_position='9', tiprack_p200_labware='opentrons_96_filtertiprack_200ul', tiprack_p200_position='6', pipette_p20='p20_single_gen2', pipette_p20_position='left', pipette_p300='p300_single_gen2', pipette_p300_position='right', aspiration_rate=0.5, dispense_rate=1, initial_dna_well=0, water_testing=False, initial_tip_p20=None, initial_tip_p300=None, tube_rack_labware='opentrons_24_tuberack_eppendorf_1.5ml_safelock_snapcap', tube_rack_position='3', **kwargs)[source]

Bases: object

Base class for automated transformation protocols on the Opentrons OT-2.

Handles loading transformation data, validating parameters, and providing shared utilities used by all transformation subclasses. Subclasses implement the specific thermocycler workflow (e.g. heat shock).

Attributes

volume_dnafloat

Volume of DNA loaded into each source well, in microliters. By default, 20 microliters. We suggest 2 µL for extracted plasmid and 5 µL for PCR products when setting transfer_volume_dna in the subclass.

replicatesint

Number of transformation replicates per strain per assembly location. By default, 2.

thermocycler_starting_wellint

Zero-indexed starting well in the thermocycler plate. By default, 0 (well A1).

thermocycler_labwarestr

Labware type for the thermocycler plate. By default, ‘nest_96_wellplate_100ul_pcr_full_skirt’.

temperature_module_labwarestr

Labware type for the aluminum block on the temperature module. By default, ‘opentrons_24_aluminumblock_nest_1.5ml_snapcap’.

temperature_module_positionstr

Deck slot for the temperature module. By default, ‘1’.

dna_platestr

Labware type for the 96-well DNA source plate (used when use_dna_96plate=True). By default, ‘nest_96_wellplate_100ul_pcr_full_skirt’.

dna_plate_positionstr

Deck slot for the 96-well DNA source plate. By default, ‘2’.

use_dna_96platebool

If True, DNA is sourced from a 96-well plate at fixed positions given by plasmid_locations. Automatically set to True when plasmid_locations is provided. By default, False.

tiprack_p20_labwarestr

Labware type for the p20 tip rack. By default, ‘opentrons_96_tiprack_20ul’.

tiprack_p20_positionstr

Deck slot for the p20 tip rack. By default, ‘9’.

tiprack_p200_labwarestr

Labware type for the p200 tip rack. By default, ‘opentrons_96_filtertiprack_200ul’.

tiprack_p200_positionstr

Deck slot for the p200 tip rack. By default, ‘6’.

pipette_p20str

Pipette model for the p20 single-channel. By default, ‘p20_single_gen2’.

pipette_p20_positionstr

Mount for the p20 pipette (‘left’ or ‘right’). By default, ‘left’.

pipette_p300str

Pipette model for the p300 single-channel. By default, ‘p300_single_gen2’.

pipette_p300_positionstr

Mount for the p300 pipette (‘left’ or ‘right’). By default, ‘right’.

aspiration_ratefloat

Relative aspiration speed as a fraction of the pipette’s maximum flow rate, where 1.0 is full speed and 0.5 is half speed. Lower values reduce bubble formation. By default, 0.5.

dispense_ratefloat

Relative dispense speed as a fraction of the pipette’s maximum flow rate, where 1.0 is full speed. By default, 1.0.

initial_dna_wellint

Zero-indexed starting well for DNA tubes on the aluminum block (used when use_dna_96plate=False). By default, 0.

water_testingbool

If True, uses water in place of competent cells and recovery media during simulation/testing runs. By default, False.

initial_tip_p20str, optional

Well name of the first tip to use from the p20 tip rack (e.g. ‘B1’). If None, starts from the first available tip. By default, None.

initial_tip_p300str, optional

Well name of the first tip to use from the p300 tip rack (e.g. ‘C3’). If None, starts from the first available tip. By default, None.

tube_rack_labwarestr

Labware type for the tube rack that holds competent cells and recovery media. Moving these off the temperature module frees the entire aluminum block for DNA plasmids, maximising unique constructs per run. By default, ‘opentrons_24_tuberack_eppendorf_1.5ml_safelock_snapcap’.

tube_rack_positionstr

Deck slot for the tube rack. By default, ‘3’.

__init__(transformation_data=None, plasmid_locations=None, json_params=None, volume_dna=20, replicates=2, thermocycler_starting_well=0, thermocycler_labware='nest_96_wellplate_100ul_pcr_full_skirt', temperature_module_labware='opentrons_24_aluminumblock_nest_1.5ml_snapcap', temperature_module_position='1', dna_plate='nest_96_wellplate_100ul_pcr_full_skirt', dna_plate_position='2', use_dna_96plate=False, tiprack_p20_labware='opentrons_96_tiprack_20ul', tiprack_p20_position='9', tiprack_p200_labware='opentrons_96_filtertiprack_200ul', tiprack_p200_position='6', pipette_p20='p20_single_gen2', pipette_p20_position='left', pipette_p300='p300_single_gen2', pipette_p300_position='right', aspiration_rate=0.5, dispense_rate=1, initial_dna_well=0, water_testing=False, initial_tip_p20=None, initial_tip_p300=None, tube_rack_labware='opentrons_24_tuberack_eppendorf_1.5ml_safelock_snapcap', tube_rack_position='3', **kwargs)[source]
Parameters:
  • transformation_data (List | None)

  • plasmid_locations (Dict | None)

  • json_params (Dict | None)

  • volume_dna (float)

  • replicates (int)

  • thermocycler_starting_well (int)

  • thermocycler_labware (str)

  • temperature_module_labware (str)

  • temperature_module_position (str)

  • dna_plate (str)

  • dna_plate_position (str)

  • use_dna_96plate (bool)

  • tiprack_p20_labware (str)

  • tiprack_p20_position (str)

  • tiprack_p200_labware (str)

  • tiprack_p200_position (str)

  • pipette_p20 (str)

  • pipette_p20_position (str)

  • pipette_p300 (str)

  • pipette_p300_position (str)

  • aspiration_rate (float)

  • dispense_rate (float)

  • initial_dna_well (int)

  • water_testing (bool)

  • initial_tip_p20 (str | None)

  • initial_tip_p300 (str | None)

  • tube_rack_labware (str)

  • tube_rack_position (str)

Parameters:
  • transformation_data (List | None)

  • plasmid_locations (Dict | None)

  • json_params (Dict | None)

  • volume_dna (float)

  • replicates (int)

  • thermocycler_starting_well (int)

  • thermocycler_labware (str)

  • temperature_module_labware (str)

  • temperature_module_position (str)

  • dna_plate (str)

  • dna_plate_position (str)

  • use_dna_96plate (bool)

  • tiprack_p20_labware (str)

  • tiprack_p20_position (str)

  • tiprack_p200_labware (str)

  • tiprack_p200_position (str)

  • pipette_p20 (str)

  • pipette_p20_position (str)

  • pipette_p300 (str)

  • pipette_p300_position (str)

  • aspiration_rate (float)

  • dispense_rate (float)

  • initial_dna_well (int)

  • water_testing (bool)

  • initial_tip_p20 (str | None)

  • initial_tip_p300 (str | None)

  • tube_rack_labware (str)

  • tube_rack_position (str)

class pudu.transformation.HeatShockTransformation(transformation_data=None, plasmid_locations=None, json_params=None, transfer_volume_dna=2, transfer_volume_competent_cell=20, tube_volume_competent_cell=100, transfer_volume_recovery_media=60, tube_volume_recovery_media=1200, cold_incubation1=None, heat_shock=None, cold_incubation2=None, recovery_incubation=None, *args, **kwargs)[source]

Bases: Transformation

Heat shock transformation protocol for the Opentrons OT-2.

Automates the full heat shock transformation workflow: loading DNA and competent cells into a thermocycler plate, running the heat shock cycle, adding recovery media, and exporting a plating map for the next protocol step.

Inherits all base parameters from Transformation. The attributes below are specific to the heat shock transformation protocol.

Attributes

transfer_volume_dnafloat

Volume of DNA to transfer into each thermocycler well, in microliters. By default, 2 microliters. Note: this is the volume actually pipetted per reaction, distinct from volume_dna (the volume loaded into the source well).

transfer_volume_competent_cellfloat

Volume of competent cells to transfer into each thermocycler well, in microliters. By default, 20 microliters.

tube_volume_competent_cellfloat

Total usable volume of competent cells per tube, in microliters. Used to calculate how many reactions each tube can supply before switching to the next tube. By default, 100 microliters.

transfer_volume_recovery_mediafloat

Volume of recovery media to add to each well after heat shock, in microliters. By default, 60 microliters.

tube_volume_recovery_mediafloat

Total usable volume of recovery media per tube, in microliters. Used to calculate how many wells each tube can supply. By default, 1200 microliters.

cold_incubation1dict

First cold incubation step (on ice before heat shock). A dict with keys ‘temperature’ (°C) and ‘hold_time_minutes’. By default, {‘temperature’: 4, ‘hold_time_minutes’: 30}.

heat_shockdict

Heat shock step. A dict with keys ‘temperature’ (°C) and ‘hold_time_minutes’. By default, {‘temperature’: 42, ‘hold_time_minutes’: 1}.

cold_incubation2dict

Second cold incubation immediately after heat shock. A dict with keys ‘temperature’ (°C) and ‘hold_time_minutes’. By default, {‘temperature’: 4, ‘hold_time_minutes’: 2}.

recovery_incubationdict

Recovery incubation after recovery media addition. A dict with keys ‘temperature’ (°C) and ‘hold_time_minutes’. By default, {‘temperature’: 37, ‘hold_time_minutes’: 60}.

__init__(transformation_data=None, plasmid_locations=None, json_params=None, transfer_volume_dna=2, transfer_volume_competent_cell=20, tube_volume_competent_cell=100, transfer_volume_recovery_media=60, tube_volume_recovery_media=1200, cold_incubation1=None, heat_shock=None, cold_incubation2=None, recovery_incubation=None, *args, **kwargs)[source]
Parameters:
  • transformation_data (List | None)

  • plasmid_locations (Dict | None)

  • json_params (Dict | None)

  • transfer_volume_dna (float)

  • transfer_volume_competent_cell (float)

  • tube_volume_competent_cell (float)

  • transfer_volume_recovery_media (float)

  • tube_volume_recovery_media (float)

  • cold_incubation1 (Dict | None)

  • heat_shock (Dict | None)

  • cold_incubation2 (Dict | None)

  • recovery_incubation (Dict | None)

liquid_transfer(protocol, pipette, volume, source, dest, asp_rate=0.5, disp_rate=1.0, blow_out=True, touch_tip=False, mix_before=0.0, mix_after=0.0, mix_reps=3, new_tip=True, remove_air=True, drop_tip=True)[source]
Parameters:
run(protocol)[source]
Parameters:

protocol (ProtocolContext)

Parameters:
  • transformation_data (List | None)

  • plasmid_locations (Dict | None)

  • json_params (Dict | None)

  • transfer_volume_dna (float)

  • transfer_volume_competent_cell (float)

  • tube_volume_competent_cell (float)

  • transfer_volume_recovery_media (float)

  • tube_volume_recovery_media (float)

  • cold_incubation1 (Dict | None)

  • heat_shock (Dict | None)

  • cold_incubation2 (Dict | None)

  • recovery_incubation (Dict | None)

class pudu.transformation.ManualTransformation(transformation_data=None, transfer_volume_dna=2, transfer_volume_competent_cell=20, transfer_volume_recovery_media=60, replicates=2, cold_incubation1=None, heat_shock=None, cold_incubation2=None, recovery_incubation=None)[source]

Bases: object

Manual counterpart of automated transformation protocol.

Parameters:
  • transformation_data (List[Dict] | None)

  • transfer_volume_dna (float)

  • transfer_volume_competent_cell (float)

  • transfer_volume_recovery_media (float)

  • replicates (int)

  • cold_incubation1 (Dict | None)

  • heat_shock (Dict | None)

  • cold_incubation2 (Dict | None)

  • recovery_incubation (Dict | None)

__init__(transformation_data=None, transfer_volume_dna=2, transfer_volume_competent_cell=20, transfer_volume_recovery_media=60, replicates=2, cold_incubation1=None, heat_shock=None, cold_incubation2=None, recovery_incubation=None)[source]
Parameters:
  • transformation_data (List[Dict] | None)

  • transfer_volume_dna (float)

  • transfer_volume_competent_cell (float)

  • transfer_volume_recovery_media (float)

  • replicates (int)

  • cold_incubation1 (Dict | None)

  • heat_shock (Dict | None)

  • cold_incubation2 (Dict | None)

  • recovery_incubation (Dict | None)

process_transformations()[source]
render_markdown()[source]
Return type:

str

write_markdown(output_path)[source]
Parameters:

output_path (str)

class pudu.transformation.ManualTransformationRecord(strain_uri: str, strain_name: str, chassis_uri: str, chassis_name: str, plasmid_uris: List[str], plasmid_names: List[str])[source]

Bases: object

Parameters:
strain_uri: str
strain_name: str
chassis_uri: str
chassis_name: str
plasmid_uris: List[str]
plasmid_names: List[str]