Restriction digest of a circular plasmid

Enzymes come from the REBASE catalog of bioapi. On a circular molecule, n cuts give n fragments; each fragment keeps the end left by its enzyme.

1

Starting code

This is the PHP code used by this example.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public function restrictionDigest(
    GenbankPlasmidMapperInterface $genbankPlasmidMapper,
    RestrictionEnzymeCatalogInterface $enzymeCatalog,
    RestrictionDigestInterface $restrictionDigest,
    RestrictionEndCompatibilityInterface $endCompatibility
) {
    $oPlasmid = $this->loadPuc19($genbankPlasmidMapper); // see "Plasmid from GenBank"
 
    // Opening the polylinker with two enzymes leaves two fragments with different sticky ends
    $oDouble = $restrictionDigest->digest($oPlasmid, [
        $enzymeCatalog->getByName("EcoRI"),
        $enzymeCatalog->getByName("HindIII"),
    ]);
 
    // PvuII cuts twice, on both sides of the polylinker, and leaves blunt ends
    $oPvuII = $restrictionDigest->digest($oPlasmid, [$enzymeCatalog->getByName("PvuII")]);
 
    // Can these ends be ligated together?
    $oEcoRIEnd = $oDouble->getCuts()[0]->getEnd();
    $oHindIIIEnd = $oDouble->getCuts()[1]->getEnd();
    $aCompatibility = [
        "EcoRI / HindIII" => $endCompatibility->checkCompatibility($oEcoRIEnd, $oHindIIIEnd),
        "EcoRI / MfeI"    => $endCompatibility->checkCompatibility($oEcoRIEnd, new RestrictionEnd(RestrictionEnd::FIVE_PRIME, "AATT")),
        "BamHI / BglII"   => $endCompatibility->checkCompatibility(
            new RestrictionEnd(RestrictionEnd::FIVE_PRIME, "GATC"),
            new RestrictionEnd(RestrictionEnd::FIVE_PRIME, "GATC")
        ),
        "PvuII / EcoRV"   => $endCompatibility->checkCompatibility(
            $oPvuII->getCuts()[0]->getEnd(),
            new RestrictionEnd(RestrictionEnd::BLUNT)
        ),
    ];
 
    return $this->render('default/cloningRestrictionDigest.html.twig', [
        'digests'       => ["EcoRI + HindIII" => $oDouble, "PvuII" => $oPvuII],
        'compatibility' => $aCompatibility,
    ]);
}
2

Result

Result returned by BioPHP for the demonstration data.

Digest by EcoRI + HindIII
Cuts
Enzyme Site (1-based) Cut after base (top / bottom strand) End
EcoRI 396 396 / 400 5' overhang AATT
HindIII 447 447 / 451 5' overhang AGCT
Fragments
Length Left end Right end
51 bp 5' overhang AATT 5' overhang AGCT
2635 bp 5' overhang AGCT 5' overhang AATT
Digest by PvuII
Cuts
Enzyme Site (1-based) Cut after base (top / bottom strand) End
PvuII 306 308 / 308 blunt
PvuII 628 630 / 630 blunt
Fragments
Length Left end Right end
322 bp blunt blunt
2364 bp blunt blunt
Can these ends be ligated?
EcoRI / HindIIIIncompatible
EcoRI / MfeICompatible: the ends can be ligated
BamHI / BglIICompatible: the ends can be ligated
PvuII / EcoRVCompatible: the ends can be ligated

The code above is the one actually executed by this page. Find the other examples in the left-hand column, or the tools in BioTools.