Source code for buildcompiler.transformation

import sbol2
from typing import List

from buildcompiler.buildcompiler import Plasmid


[docs] def bacterial_transformation( plasmids: List[Plasmid], chassis_impl: sbol2.Implementation, chassis_md: sbol2.ModuleDefinition, # TODO change to impl transformation_doc: sbol2.Document, ): for plasmid in plasmids: plasmid_impl = plasmid.plasmid_implementations[ 0 ] # TODO update with more sophisticated selection process? plasmid_cd = plasmid.plasmid_definition transformation_activity = sbol2.Activity( f"transform_{chassis_md.name}_with_{plasmid.name}" ) transformation_activity.name = "Bacterial Tranformation" transformation_activity.types = "http://sbols.org/v2#build" chassis_usage = sbol2.Usage( uri=f"{chassis_md.name}_chassis", entity=chassis_impl.identity, role="http://sbols.org/v2#build", ) plasmid_usage = sbol2.Usage( uri=f"{plasmid_cd.name}_plasmid_source", entity=plasmid_impl.identity, role="http://sbols.org/v2#build", ) transformation_activity.usages = [chassis_usage, plasmid_usage] new_strain = sbol2.ModuleDefinition(f"{chassis_md.name}_with_{plasmid_cd.name}") chassis_module = sbol2.Module(uri=f"{chassis_md.name}_chassis") chassis_module.definition = chassis_md.identity plasmid_functional_component = sbol2.FunctionalComponent( uri=f"{plasmid_cd.name}_engineered_plasmid" ) plasmid_functional_component.definition = plasmid_cd.identity new_strain.modules = [chassis_module] new_strain.functionalComponents = [plasmid_functional_component] transformation_activity_association = sbol2.Association( f"transform_{chassis_md.name}" ) transformation_activity_plan = sbol2.Plan( f"{new_strain.displayId}_transformation_plan" ) transformation_activity_plan.description = ( "TODO: generate accurate description of transformation" ) transformation_activity_association.plan = transformation_activity_plan transformation_activity_agent = sbol2.Agent("BuildCompiler") transformation_activity_association.agent = transformation_activity_agent transformation_activity.associations = [transformation_activity_association] new_strain_impl = sbol2.Implementation(f"{new_strain.displayId}_impl") new_strain_impl.built = new_strain.identity new_strain_impl.wasGeneratedBy = transformation_activity.identity transformation_doc.add_list( [ new_strain_impl, transformation_activity, chassis_md, chassis_usage, chassis_module, new_strain, plasmid_functional_component, transformation_activity_plan, ] )