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:
objectBase 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:
TransformationHeat 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)
- 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:
objectManual counterpart of automated transformation protocol.
- Parameters: