BioPHP - Restriction Enzyme Class
Original code submitted by josebaCode bellow is covered by GNU GPL v2 license.
Description
Last change: 2010/10/18 21:01 | Recent Changes | Original description(short for \"Restriction Enzyme\") Contains code for the RestEn Class.
Code
Last change: 2010/10/18 21:01 | Recent Changes | Download | Original code<?php
// RestEn.inc - contains definition of RestEn (restriction endonucleases) class.
/*
parse_args() parses arguments that are passed to a function as a single string in order
to mimic BioPerl\'s syntax: new SomeClass(argname1 => value1, argname2 => value2, ... ).
I am actually thinking of dropping this in favor of the more cumbersome format native
to PHP: new SomeClass( array(argname1 => value1, argname2 => value2, ... ) ).
*/
function parse_args($args)
{
$arguments = array();
preg_match_all(\"/\\\'[a-zA-Z0-9]*\\\'=>\\\'[^\\\']+\\\'/\", $args, $match);
foreach($match[0] as $assign_string)
{
$temp = preg_split(\"/=>/\", $assign_string);
$argname = $temp[0];
$argvalue = $temp[1];
$argname = eregi_replace(\"\'\", \"\", $argname);
$argvalue = eregi_replace(\"\'\", \"\", $argvalue);
$arguments[$argname] = $argvalue;
}
return $arguments;
}
$RestEn_DB = array(
\'AasI\' => array(\'GACNNNNNNGTC\', 7),
\'AatI\' => array(\'AGGCCT\', 3),
\'AatII\' => array(\'GACGTC\', 5),
\"AauI\" => array(\"TGTACA\", 1),
\'AccI\' => array(\'GTMKAC\', 2),
\"AccII\" => array(\"CGCG\", 2),
\"AccIII\" => array(\"TCCGGA\",1),
\'Acc16I\' => array(\'TGCGCA\', 3),
\"Acc65I\" => array(\"GGTACC\", 1),
\'Acc113I\' => array(\'AGTACT\', 3),
\"AccB1I\" => array(\"GGYRCC\", 1),
\'AccB7I\' => array(\'CCANNNNNTGG\', 7),
\"AclI\" => array(\"AACGTT\", 2),
\"AcsI\" => array(\"RAATTY\", 1),
\'AcvI\' => array(\'CACGTG\', 3),
\'AcyI\' => array(\'GRCGYC\', 2),
\'AdeI\' => array(\'CACNNNGTG\', 6),
\'AfaI\' => array(\'GTAC\', 2),
\'AfeI\' => array(\'AGCGCT\', 3),
\'AflI\' => array(\'GGWCC\', 1),
\'AflII\' => array(\'CTTAAG\', 1),
\'AflIII\' => array(\'ACRYGT\', 1),
\'AgeI\' => array(\'ACCGGT\', 1),
\'AhaIII\' => array(\'TTTAAA\', 3),
\'AhdI\' => array(\'GACNNNNNGTC\', 6),
\'AhlI\' => array(\'ACTAGT\', 1),
\'AleI\' => array(\'CACNNNNGTG\', 5),
\'AluI\' => array(\'AGCT\', 2),
\'Alw21I\' => array(\'GWGCWC\', 5),
\'Alw44I\' => array(\'GTGCAC\', 1),
\'AlwNI\' => array(\'CAGNNNCTG\', 6),
\'Ama87I\' => array(\'CYCGRG\', 1),
\'AocI\' => array(\'CCTNAGG\', 2),
\'Aor51HI\' => array(\'AGCGCT\', 3),
\'ApaI\' => array(\'GGGCCC\', 5),
\'ApaBI\' => array(\'GCANNNNNTGC\', 8),
\'ApaLI\' => array(\'GTGCAC\', 1),
\'ApoI\' => array(\'RAATTY\', 1),
\'AscI\' => array(\'GGCGCGCC\', 2),
\'AseI\' => array(\'ATTAAT\', 2),
\'AsiAI\' => array(\'ACCGGT\', 1),
\'AsiSI\' => array(\'GCGATCGC\', 5),
\'AsnI\' => array(\'ATTAAT\', 2),
\'AspI\' => array(\'GACNNNGTC\', 4),
\'Asp700I\' => array(\'GAANNNNTTC\', 5),
\'Asp718I\' => array(\'GGTACC\', 1),
\'AspEI\' => array(\'GACNNNNNGTC\', 6),
\'AspHI\' => array(\'GWGCWC\', 5),
\'AspLEI\' => array(\'GCGC\', 3),
\'AspS9I\' => array(\'GGNCC\', 1),
\'AsuI\' => array(\'GGNCC\', 1),
\'AsuII\' => array(\'TTCGAA\', 2),
\'AsuC2I\' => array(\'CCSGG\', 2),
\'AsuNHI\' => array(\'GCTAGC\', 1),
\'AvaI\' => array(\'CYCGRG\', 1),
\'AvaII\' => array(\'GGWCC\', 1),
\'AviII\' => array(\'TGCGCA\', 3),
\'AvrII\' => array(\'CCTAGG\', 1),
\'AxyI\' => array(\'CCTNAGG\', 2),
\'BalI\' => array(\'TGGCCA\', 3),
\'BamHI\' => array(\'GGATCC\', 1),
\'BanI\' => array(\'GGYRCC\', 1),
\'BanII\' => array(\'GRGCYC\', 5),
\'BanIII\' => array(\'ATCGAT\', 2),
\'BbeI\' => array(\'GGCGCC\', 5),
\'BbrPI\' => array(\'CACGTG\', 3),
\'BbuI\' => array(\'GCATGC\', 5),
\'Bbv12I\' => array(\'GWGCWC\', 5),
\'BclI\' => array(\'TGATCA\', 1),
\'BcnI\' => array(\'CCSGG\', 2),
\'BcoI\' => array(\'CYCGRG\', 1),
\'BcuI\' => array(\'ACTAGT\', 1),
\'BetI\' => array(\'WCCGGW\', 1),
\'BfaI\' => array(\'CTAG\', 1),
\'BfmI\' => array(\'CTRYAG\', 1),
\'BfrI\' => array(\'CTTAAG\', 1),
\'BfrBI\' => array(\'ATGCAT\', 3),
\'BfuCI\' => array(\'GATC\', 0),
\'BglI\' => array(\'GCCNNNNNGGC\', 7),
\'BglII\' => array(\'AGATCT\', 1),
\'BlnI\' => array(\'CCTAGG\', 1),
\'BloHII\' => array(\'CTGCAG\', 5),
\'BlpI\' => array(\'GCTNAGC\', 2),
\'Bme18I\' => array(\'GGWCC\', 1),
\'Bme1390I\' => array(\'CCNGG\', 2),
\'Bme1580I\' => array(\'GKGCMC\', 5),
\'BmtI\' => array(\'GCTAGC\', 5),
\'BmyI\' => array(\'GDGCHC\', 5),
\'BoxI\' => array(\'GACNNNNGTC\', 5),
\'Bpu14I\' => array(\'TTCGAA\', 2),
\'Bpu1102I\' => array(\'GCTNAGC\', 2),
\'Bsa29I\' => array(\'ATCGAT\', 2),
\'BsaAI\' => array(\'YACGTR\', 3),
\'BsaBI\' => array(\'GATNNNNATC\', 5),
\'BsaHI\' => array(\'GRCGYC\', 2),
\'BsaJI\' => array(\'CCNNGG\', 1),
\'BsaOI\' => array(\'CGRYCG\', 4),
\'BsaWI\' => array(\'WCCGGW\', 1),
\'BscI\' => array(\'ATCGAT\', 2),
\'Bsc4I\' => array(\'CCNNNNNNNGG\', 7),
\'BscBI\' => array(\'GGNNCC\', 3),
\'BscFI\' => array(\'GATC\', 0),
\'Bse8I\' => array(\'GATNNNNATC\', 5),
\'Bse21I\' => array(\'CCTNAGG\', 2),
\'Bse118I\' => array(\'RCCGGY\', 1),
\'BseAI\' => array(\'TCCGGA\', 1),
\'BseBI\' => array(\'CCWGG\', 2),
\'BseCI\' => array(\'ATCGAT\', 2),
\'BseDI\' => array(\'CCNNGG\', 1),
\'BseJI\' => array(\'GATNNNNATC\', 5),
\'BseLI\' => array(\'CCNNNNNNNGG\', 7),
\'BsePI\' => array(\'GCGCGC\', 1),
\'BseSI\' => array(\'GKGCMC\', 5),
\'BseX3I\' => array(\'CGGCCG\', 1),
\'BshI\' => array(\'GGCC\', 2),
\'Bsh1236I\' => array(\'CGCG\', 2),
\'Bsh1285I\' => array(\'CGRYCG\', 4),
\'BshFI\' => array(\'GGCC\', 2),
\'BshNI\' => array(\'GGYRCC\', 1),
\'BshTI\' => array(\'ACCGGT\', 1),
\'BsiBI\' => array(\'GATNNNNATC\', 5),
\'BsiCI\' => array(\'TTCGAA\', 2),
\'BsiEI\' => array(\'CGRYCG\', 4),
\'BsiHKAI\' => array(\'GWGCWC\', 5),
\'BsiHKCI\' => array(\'CYCGRG\', 1),
\'BsiLI\' => array(\'CCWGG\', 2),
\'BsiMI\' => array(\'TCCGGA\', 1),
\'BsiQI\' => array(\'TGATCA\', 1),
\'BsiSI\' => array(\'CCGG\', 1),
\'BsiWI\' => array(\'CGTACG\', 1),
\'BsiXI\' => array(\'ATCGAT\', 2),
\'BsiYI\' => array(\'CCNNNNNNNGG\', 7),
\'BsiZI\' => array(\'GGNCC\', 1),
\'BslI\' => array(\'CCNNNNNNNGG\', 7),
\'BsoBI\' => array(\'CYCGRG\', 1),
\'Bsp13I\' => array(\'TCCGGA\', 1),
\'Bsp19I\' => array(\'CCATGG\', 1),
\'Bsp68I\' => array(\'TCGCGA\', 3),
\'Bsp106I\' => array(\'ATCGAT\', 2),
\'Bsp119I\' => array(\'TTCGAA\', 2),
\'Bsp120I\' => array(\'GGGCCC\', 1),
\'Bsp143I\' => array(\'GATC\', 0),
\'Bsp143II\' => array(\'RGCGCY\', 5),
\'Bsp1286I\' => array(\'GDGCHC\', 5),
\'Bsp1407I\' => array(\'TGTACA\', 1),
\'Bsp1720I\' => array(\'GCTNAGC\', 2),
\'BspA2I\' => array(\'CCTAGG\', 1),
\'BspCI\' => array(\'CGATCG\', 4),
\'BspDI\' => array(\'ATCGAT\', 2),
\'BspEI\' => array(\'TCCGGA\', 1),
\'BspHI\' => array(\'TCATGA\', 1),
\'BspLI\' => array(\'GGNNCC\', 3),
\'BspLU11I\' => array(\'ACATGT\', 1),
\'BspMII\' => array(\'TCCGGA\', 1),
\'BspTI\' => array(\'CTTAAG\', 1),
\'BspT104I\' => array(\'TTCGAA\', 2),
\'BspT107I\' => array(\'GGYRCC\', 1),
\'BspXI\' => array(\'ATCGAT\', 2),
\'BsrBRI\' => array(\'GATNNNNATC\', 5),
\'BsrFI\' => array(\'RCCGGY\', 1),
\'BsrGI\' => array(\'TGTACA\', 1),
\'BssAI\' => array(\'RCCGGY\', 1),
\'BssECI\' => array(\'CCNNGG\', 1),
\'BssHI\' => array(\'CTCGAG\', 1),
\'BssHII\' => array(\'GCGCGC\', 1),
\'BssKI\' => array(\'CCNGG\', 0),
\'BssNAI\' => array(\'GTATAC\', 3),
\'BssT1I\' => array(\'CCWWGG\', 1),
\'Bst98I\' => array(\'CTTAAG\', 1),
\'Bst1107I\' => array(\'GTATAC\', 3),
\'BstACI\' => array(\'GRCGYC\', 2),
\'BstAPI\' => array(\'GCANNNNNTGC\', 7),
\'BstBI\' => array(\'TTCGAA\', 2),
\'BstBAI\' => array(\'YACGTR\', 3),
\'Bst4CI\' => array(\'ACNGT\', 3),
\'BstC8I\' => array(\'GCNNGC\', 3),
\'BstDEI\' => array(\'CTNAG\', 1),
\'BstDSI\' => array(\'CCRYGG\', 1),
\'BstEII\' => array(\'GGTNACC\', 1),
\'BstENI\' => array(\'CCTNNNNNAGG\', 5),
\'BstENII\' => array(\'GATC\', 0),
\'BstFNI\' => array(\'CGCG\', 2),
\'BstH2I\' => array(\'RGCGCY\', 5),
\'BstHHI\' => array(\'GCGC\', 3),
\'BstHPI\' => array(\'GTTAAC\', 3),
\'BstKTI\' => array(\'GATC\', 3),
\'BstMAI\' => array(\'CTGCAG\', 5),
\'BstMCI\' => array(\'CGRYCG\', 4),
\'BstMWI\' => array(\'GCNNNNNNNGC\', 7),
\'BstNI\' => array(\'CCWGG\', 2),
\'BstNSI\' => array(\'RCATGY\', 5),
\'BstOI\' => array(\'CCWGG\', 2),
\'BstPI\' => array(\'GGTNACC\', 1),
\'BstPAI\' => array(\'GACNNNNGTC\', 5),
\'BstSCI\' => array(\'CCNGG\', 0),
\'BstSFI\' => array(\'CTRYAG\', 1),
\'BstSNI\' => array(\'TACGTA\', 3),
\'BstUI\' => array(\'CGCG\', 2),
\'Bst2UI\' => array(\'CCWGG\', 2),
\'BstXI\' => array(\'CCANNNNNNTGG\', 8),
\'BstX2I\' => array(\'RGATCY\', 1),
\'BstYI\' => array(\'RGATCY\', 1),
\'BstZI\' => array(\'CGGCCG\', 1),
\'BstZ17I\' => array(\'GTATAC\', 3),
\'Bsu15I\' => array(\'ATCGAT\', 2),
\'Bsu36I\' => array(\'CCTNAGG\', 2),
\'BsuRI\' => array(\'GGCC\', 2),
\'BsuTUI\' => array(\'ATCGAT\', 2),
\'BtgI\' => array(\'CCRYGG\', 1),
\'BthCI\' => array(\'GCNGC\', 4),
\'Cac8I\' => array(\'GCNNGC\', 3),
\'CaiI\' => array(\'CAGNNNCTG\', 6),
\'CauII\' => array(\'CCSGG\', 2),
\'CciNI\' => array(\'GCGGCCGC\', 2),
\'CelII\' => array(\'GCTNAGC\', 2),
\'CfoI\' => array(\'GCGC\', 3),
\'CfrI\' => array(\'YGGCCR\', 1),
\'Cfr9I\' => array(\'CCCGGG\', 1),
\'Cfr10I\' => array(\'RCCGGY\', 1),
\'Cfr13I\' => array(\'GGNCC\', 1),
\'Cfr42I\' => array(\'CCGCGG\', 4),
\'ChaI\' => array(\'GATC\', 4),
\'ClaI\' => array(\'ATCGAT\', 2),
\'CpoI\' => array(\'CGGWCCG\', 2),
\'CspI\' => array(\'CGGWCCG\', 2),
\'Csp6I\' => array(\'GTAC\', 1),
\'Csp45I\' => array(\'TTCGAA\', 2),
\'CspAI\' => array(\'ACCGGT\', 1),
\'CviAII\' => array(\'CATG\', 1),
\'CviJI\' => array(\'RGCY\', 2),
\'CviRI\' => array(\'TGCA\', 2),
\'CviTI\' => array(\'RGCY\', 2),
\'CvnI\' => array(\'CCTNAGG\', 2),
\'DdeI\' => array(\'CTNAG\', 1),
\'DpnI\' => array(\'GATC\', 2),
\'DpnII\' => array(\'GATC\', 0),
\'DraI\' => array(\'TTTAAA\', 3),
\'DraII\' => array(\'RGGNCCY\', 2),
\'DraIII\' => array(\'CACNNNGTG\', 6),
\'DrdI\' => array(\'GACNNNNNNGTC\', 7),
\'DsaI\' => array(\'CCRYGG\', 1),
\'DseDI\' => array(\'GACNNNNNNGTC\', 7),
\'EaeI\' => array(\'YGGCCR\', 1),
\'EagI\' => array(\'CGGCCG\', 1),
\'Eam1105I\' => array(\'GACNNNNNGTC\', 6),
\'Ecl136II\' => array(\'GAGCTC\', 3),
\'EclHKI\' => array(\'GACNNNNNGTC\', 6),
\'EclXI\' => array(\'CGGCCG\', 1),
\'Eco24I\' => array(\'GRGCYC\', 5),
\'Eco32I\' => array(\'GATATC\', 3),
\'Eco47I\' => array(\'GGWCC\', 1),
\'Eco47III\' => array(\'AGCGCT\', 3),
\'Eco52I\' => array(\'CGGCCG\', 1),
\'Eco72I\' => array(\'CACGTG\', 3),
\'Eco81I\' => array(\'CCTNAGG\', 2),
\'Eco88I\' => array(\'CYCGRG\', 1),
\'Eco91I\' => array(\'GGTNACC\', 1),
\'Eco105I\' => array(\'TACGTA\', 3),
\'Eco130I\' => array(\'CCWWGG\', 1),
\'Eco147I\' => array(\'AGGCCT\', 3),
\'EcoHI\' => array(\'CCSGG\', 0),
\'EcoICRI\' => array(\'GAGCTC\', 3),
\'EcoNI\' => array(\'CCTNNNNNAGG\', 5),
\'EcoO65I\' => array(\'GGTNACC\', 1),
\'EcoO109I\' => array(\'RGGNCCY\', 2),
\'EcoRI\' => array(\'GAATTC\', 1),
\'EcoRII\' => array(\'CCWGG\', 0),
\'EcoRV\' => array(\'GATATC\', 3),
\'EcoT14I\' => array(\'CCWWGG\', 1),
\'EcoT22I\' => array(\'ATGCAT\', 5),
\'EcoT38I\' => array(\'GRGCYC\', 5),
\'EgeI\' => array(\'GGCGCC\', 3),
\'EheI\' => array(\'GGCGCC\', 3),
\'ErhI\' => array(\'CCWWGG\', 1),
\'EsaBC3I\' => array(\'TCGA\', 2),
\'EspI\' => array(\'GCTNAGC\', 2),
\'FatI\' => array(\'CATG\', 0),
\'FauNDI\' => array(\'CATATG\', 2),
\'FbaI\' => array(\'TGATCA\', 1),
\'FblI\' => array(\'GTMKAC\', 2),
\'FmuI\' => array(\'GGNCC\', 4),
\'FnuDII\' => array(\'CGCG\', 2),
\'Fnu4HI\' => array(\'GCNGC\', 2),
\'FriOI\' => array(\'GRGCYC\', 5),
\'FseI\' => array(\'GGCCGGCC\', 6),
\'FspI\' => array(\'TGCGCA\', 3),
\'FspAI\' => array(\'RTGCGCAY\', 4),
\'Fsp4HI\' => array(\'GCNGC\', 2),
\'FunI\' => array(\'AGCGCT\', 3),
\'FunII\' => array(\'GAATTC\', 1),
\'HaeI\' => array(\'WGGCCW\', 3),
\'HaeII\' => array(\'RGCGCY\', 5),
\'HaeIII\' => array(\'GGCC\', 2),
\'HapII\' => array(\'CCGG\', 1),
\'HgiAI\' => array(\'GWGCWC\', 5),
\'HgiCI\' => array(\'GGYRCC\', 1),
\'HgiJII\' => array(\'GRGCYC\', 5),
\'HhaI\' => array(\'GCGC\', 3),
\'Hin1I\' => array(\'GRCGYC\', 2),
\'Hin6I\' => array(\'GCGC\', 1),
\'HinP1I\' => array(\'GCGC\', 1),
\'HincII\' => array(\'GTYRAC\', 3),
\'HindII\' => array(\'GTYRAC\', 3),
\'HindIII\' => array(\'AAGCTT\', 1),
\'HinfI\' => array(\'GANTC\', 1),
\'HpaI\' => array(\'GTTAAC\', 3),
\'HpaII\' => array(\'CCGG\', 1),
\'Hpy8I\' => array(\'GTNNAC\', 3),
\'Hpy99I\' => array(\'CGWCG\', 5),
\'Hpy178III\' => array(\'TCNNGA\', 2),
\'Hpy188I\' => array(\'TCNGA\', 3),
\'Hpy188III\' => array(\'TCNNGA\', 2),
\'HpyCH4I\' => array(\'CATG\', 3),
\'HpyCH4III\' => array(\'ACNGT\', 3),
\'HpyCH4IV\' => array(\'ACGT\', 1),
\'HpyCH4V\' => array(\'TGCA\', 2),
\'HpyF10VI\' => array(\'GCNNNNNNNGC\', 8),
\'Hsp92I\' => array(\'GRCGYC\', 2),
\'Hsp92II\' => array(\'CATG\', 4),
\'HspAI\' => array(\'GCGC\', 1),
\'ItaI\' => array(\'GCNGC\', 2),
\'KasI\' => array(\'GGCGCC\', 1),
\'KpnI\' => array(\'GGTACC\', 5),
\'Kpn2I\' => array(\'TCCGGA\', 1),
\'KspI\' => array(\'CCGCGG\', 4),
\'Ksp22I\' => array(\'TGATCA\', 1),
\'KspAI\' => array(\'GTTAAC\', 3),
\'Kzo9I\' => array(\'GATC\', 0),
\'LpnI\' => array(\'RGCGCY\', 3),
\'LspI\' => array(\'TTCGAA\', 2),
\'MabI\' => array(\'ACCWGGT\', 1),
\'MaeI\' => array(\'CTAG\', 1),
\'MaeII\' => array(\'ACGT\', 1),
\'MaeIII\' => array(\'GTNAC\', 0),
\'MamI\' => array(\'GATNNNNATC\', 5),
\'MboI\' => array(\'GATC\', 0),
\'McrI\' => array(\'CGRYCG\', 4),
\'MfeI\' => array(\'CAATTG\', 1),
\'MflI\' => array(\'RGATCY\', 1),
\'MhlI\' => array(\'GDGCHC\', 5),
\'MlsI\' => array(\'TGGCCA\', 3),
\'MluI\' => array(\'ACGCGT\', 1),
\'MluNI\' => array(\'TGGCCA\', 3),
\'Mly113I\' => array(\'GGCGCC\', 2),
\'Mph1103I\' => array(\'ATGCAT\', 5),
\'MroI\' => array(\'TCCGGA\', 1),
\'MroNI\' => array(\'GCCGGC\', 1),
\'MroXI\' => array(\'GAANNNNTTC\', 5),
\'MscI\' => array(\'TGGCCA\', 3),
\'MseI\' => array(\'TTAA\', 1),
\'MslI\' => array(\'CAYNNNNRTG\', 5),
\'MspI\' => array(\'CCGG\', 1),
\'Msp20I\' => array(\'TGGCCA\', 3),
\'MspA1I\' => array(\'CMGCKG\', 3),
\'MspCI\' => array(\'CTTAAG\', 1),
\'MspR9I\' => array(\'CCNGG\', 2),
\'MssI\' => array(\'GTTTAAAC\', 4),
\'MstI\' => array(\'TGCGCA\', 3),
\'MunI\' => array(\'CAATTG\', 1),
\'MvaI\' => array(\'CCWGG\', 2),
\'MvnI\' => array(\'CGCG\', 2),
\'MwoI\' => array(\'GCNNNNNNNGC\', 7),
\'NaeI\' => array(\'GCCGGC\', 3),
\'NarI\' => array(\'GGCGCC\', 2),
\'NciI\' => array(\'CCSGG\', 2),
\'NcoI\' => array(\'CCATGG\', 1),
\'NdeI\' => array(\'CATATG\', 2),
\'NdeII\' => array(\'GATC\', 0),
\'NgoAIV\' => array(\'GCCGGC\', 1),
\'NgoMIV\' => array(\'GCCGGC\', 1),
\'NheI\' => array(\'GCTAGC\', 1),
\'NlaIII\' => array(\'CATG\', 4),
\'NlaIV\' => array(\'GGNNCC\', 3),
\'Nli3877I\' => array(\'CYCGRG\', 5),
\'NmuCI\' => array(\'GTSAC\', 0),
\'NotI\' => array(\'GCGGCCGC\', 2),
\'NruI\' => array(\'TCGCGA\', 3),
\'NruGI\' => array(\'GACNNNNNGTC\', 6),
\'NsbI\' => array(\'TGCGCA\', 3),
\'NsiI\' => array(\'ATGCAT\', 5),
\'NspI\' => array(\'RCATGY\', 5),
\'NspIII\' => array(\'CYCGRG\', 1),
\'NspV\' => array(\'TTCGAA\', 2),
\'NspBII\' => array(\'CMGCKG\', 3),
\'OliI\' => array(\'CACNNNNGTG\', 5),
\'PacI\' => array(\'TTAATTAA\', 5),
\'PaeI\' => array(\'GCATGC\', 5),
\'PaeR7I\' => array(\'CTCGAG\', 1),
\'PagI\' => array(\'TCATGA\', 1),
\'PalI\' => array(\'GGCC\', 2),
\'PauI\' => array(\'GCGCGC\', 1),
\'PceI\' => array(\'AGGCCT\', 3),
\'PciI\' => array(\'ACATGT\', 1),
\'PdiI\' => array(\'GCCGGC\', 3),
\'PdmI\' => array(\'GAANNNNTTC\', 5),
\'Pfl23II\' => array(\'CGTACG\', 1),
\'PflBI\' => array(\'CCANNNNNTGG\', 7),
\'PflFI\' => array(\'GACNNNGTC\', 4),
\'PflMI\' => array(\'CCANNNNNTGG\', 7),
\'PfoI\' => array(\'TCCNGGA\', 1),
\'PinAI\' => array(\'ACCGGT\', 1),
\'Ple19I\' => array(\'CGATCG\', 4),
\'PmaCI\' => array(\'CACGTG\', 3),
\'PmeI\' => array(\'GTTTAAAC\', 4),
\'PmlI\' => array(\'CACGTG\', 3),
\'Ppu10I\' => array(\'ATGCAT\', 1),
\'PpuMI\' => array(\'RGGWCCY\', 2),
\'PpuXI\' => array(\'RGGWCCY\', 2),
\'PshAI\' => array(\'GACNNNNGTC\', 5),
\'PshBI\' => array(\'ATTAAT\', 2),
\'PsiI\' => array(\'TTATAA\', 3),
\'Psp03I\' => array(\'GGWCC\', 4),
\'Psp5II\' => array(\'RGGWCCY\', 2),
\'Psp6I\' => array(\'CCWGG\', 0),
\'Psp1406I\' => array(\'AACGTT\', 2),
\'PspAI\' => array(\'CCCGGG\', 1),
\'Psp124BI\' => array(\'GAGCTC\', 5),
\'PspEI\' => array(\'GGTNACC\', 1),
\'PspGI\' => array(\'CCWGG\', 0),
\'PspLI\' => array(\'CGTACG\', 1),
\'PspN4I\' => array(\'GGNNCC\', 3),
\'PspOMI\' => array(\'GGGCCC\', 1),
\'PspPI\' => array(\'GGNCC\', 1),
\'PspPPI\' => array(\'RGGWCCY\', 2),
\'PssI\' => array(\'RGGNCCY\', 5),
\'PstI\' => array(\'CTGCAG\', 5),
\'PsuI\' => array(\'RGATCY\', 1),
\'PsyI\' => array(\'GACNNNGTC\', 4),
\'PvuI\' => array(\'CGATCG\', 4),
\'PvuII\' => array(\'CAGCTG\', 3),
\'RcaI\' => array(\'TCATGA\', 1),
\'RsaI\' => array(\'GTAC\', 2),
\'RsrII\' => array(\'CGGWCCG\', 2),
\'Rsr2I\' => array(\'CGGWCCG\', 2),
\'SacI\' => array(\'GAGCTC\', 5),
\'SacII\' => array(\'CCGCGG\', 4),
\'SalI\' => array(\'GTCGAC\', 1),
\'SanDI\' => array(\'GGGWCCC\', 2),
\'SatI\' => array(\'GCNGC\', 2),
\'SauI\' => array(\'CCTNAGG\', 2),
\'Sau96I\' => array(\'GGNCC\', 1),
\'Sau3AI\' => array(\'GATC\', 0),
\'SbfI\' => array(\'CCTGCAGG\', 6),
\'ScaI\' => array(\'AGTACT\', 3),
\'SciI\' => array(\'CTCGAG\', 3),
\'ScrFI\' => array(\'CCNGG\', 2),
\'SdaI\' => array(\'CCTGCAGG\', 6),
\'SduI\' => array(\'GDGCHC\', 5),
\'SecI\' => array(\'CCNNGG\', 1),
\'SelI\' => array(\'CGCG\', 0),
\'SexAI\' => array(\'ACCWGGT\', 1),
\'SfcI\' => array(\'CTRYAG\', 1),
\'SfeI\' => array(\'CTRYAG\', 1),
\'SfiI\' => array(\'GGCCNNNNNGGCC\', 8),
\'SfoI\' => array(\'GGCGCC\', 3),
\'Sfr274I\' => array(\'CTCGAG\', 1),
\'Sfr303I\' => array(\'CCGCGG\', 4),
\'SfuI\' => array(\'TTCGAA\', 2),
\'SgfI\' => array(\'GCGATCGC\', 5),
\'SgrAI\' => array(\'CRCCGGYG\', 2),
\'SgrBI\' => array(\'CCGCGG\', 4),
\'SinI\' => array(\'GGWCC\', 1),
\'SlaI\' => array(\'CTCGAG\', 1),
\'SmaI\' => array(\'CCCGGG\', 3),
\'SmiI\' => array(\'ATTTAAAT\', 4),
\'SmiMI\' => array(\'CAYNNNNRTG\', 5),
\'SmlI\' => array(\'CTYRAG\', 1),
\'SnaBI\' => array(\'TACGTA\', 3),
\'SpaHI\' => array(\'GCATGC\', 5),
\'SpeI\' => array(\'ACTAGT\', 1),
\'SphI\' => array(\'GCATGC\', 5),
\'SplI\' => array(\'CGTACG\', 1),
\'SrfI\' => array(\'GCCCGGGC\', 4),
\'Sse9I\' => array(\'AATT\', 0),
\'Sse232I\' => array(\'CGCCGGCG\', 2),
\'Sse8387I\' => array(\'CCTGCAGG\', 6),
\'Sse8647I\' => array(\'AGGWCCT\', 2),
\'SseBI\' => array(\'AGGCCT\', 3),
\'SspI\' => array(\'AATATT\', 3),
\'SspBI\' => array(\'TGTACA\', 1),
\'SstI\' => array(\'GAGCTC\', 5),
\'SstII\' => array(\'CCGCGG\', 4),
\'StuI\' => array(\'AGGCCT\', 3),
\'StyI\' => array(\'CCWWGG\', 1),
\'SunI\' => array(\'CGTACG\', 1),
\'SwaI\' => array(\'ATTTAAAT\', 4),
\'TaaI\' => array(\'ACNGT\', 3),
\'TaiI\' => array(\'ACGT\', 4),
\'TaqI\' => array(\'TCGA\', 1),
\'TasI\' => array(\'AATT\', 0),
\'TatI\' => array(\'WGTACW\', 1),
\'TauI\' => array(\'GCSGC\', 4),
\'TelI\' => array(\'GACNNNGTC\', 4),
\'TfiI\' => array(\'GAWTC\', 1),
\'ThaI\' => array(\'CGCG\', 2),
\'TliI\' => array(\'CTCGAG\', 1),
\'Tru1I\' => array(\'TTAA\', 1),
\'Tru9I\' => array(\'TTAA\', 1),
\'TscI\' => array(\'ACGT\', 4),
\'TseI\' => array(\'GCWGC\', 1),
\'Tsp45I\' => array(\'GTSAC\', 0),
\'Tsp509I\' => array(\'AATT\', 0),
\'Tsp4CI\' => array(\'ACNGT\', 3),
\'TspEI\' => array(\'AATT\', 0),
\'Tth111I\' => array(\'GACNNNGTC\', 4),
\'TthHB8I\' => array(\'TCGA\', 1),
\'UnbI\' => array(\'GGNCC\', 0),
\'Van91I\' => array(\'CCANNNNNTGG\', 7),
\'Vha464I\' => array(\'CTTAAG\', 1),
\'VneI\' => array(\'GTGCAC\', 1),
\'VpaK11AI\' => array(\'GGWCC\', 0),
\'VpaK11BI\' => array(\'GGWCC\', 1),
\'VspI\' => array(\'ATTAAT\', 2),
\'XagI\' => array(\'CCTNNNNNAGG\', 5),
\'XapI\' => array(\'RAATTY\', 1),
\'XbaI\' => array(\'TCTAGA\', 1),
\'XceI\' => array(\'RCATGY\', 5),
\'XcmI\' => array(\'CCANNNNNNNNNTGG\', 8),
\'XhoI\' => array(\'CTCGAG\', 1),
\'XhoII\' => array(\'RGATCY\', 1),
\'XmaI\' => array(\'CCCGGG\', 1),
\'XmaIII\' => array(\'CGGCCG\', 1),
\'XmaCI\' => array(\'CCCGGG\', 1),
\'XmaJI\' => array(\'CCTAGG\', 1),
\'XmiI\' => array(\'GTMKAC\', 2),
\'XmnI\' => array(\'GAANNNNTTC\', 5),
\'XspI\' => array(\'CTAG\', 1),
\'ZhoI\' => array(\'ATCGAT\', 2),
\'ZraI\' => array(\'GACGTC\', 3),
\'Zsp2I\' => array(\'ATGCAT\', 5)
);
class RestEn
{ // OPENS RestEn Class
var $name;
var $pattern;
var $cutpos;
var $length;
// CutSeq() cuts a DNA sequence into fragments using the restriction enzyme object.
function CutSeq($seq, $options = \"N\")
{ // OPENS function CutSeq
if ($options == \"N\")
{ // OPENS if ($options == \"N\")
// patpos() returns: ( \"PAT1\" => (0, 12), \"PAT2\" => (7, 29, 53) )
$patpos_r = $seq->patpos($this->pattern, \"I\");
$frag = array();
foreach($patpos_r as $patkey => $pos_r)
{
$ctr = 0;
foreach($pos_r as $currindex)
{
$ctr++;
if ($ctr == 1)
{
// 1st fragment is everything to the left of the 1st occurrence of pattern
$frag[] = substr($seq->sequence, 0, $currindex + $this->cutpos);
$previndex = $currindex;
continue;
}
if (($currindex - $previndex) >= $this->cutpos)
{
$newcount = $currindex - $previndex;
$frag[] = substr($seq->sequence, $previndex + $this->cutpos, $newcount);
$previndex = $currindex;
}
else continue;
}
// The last (right-most) fragment.
$frag[] = substr($seq->sequence, $previndex + $this->cutpos);
}
return $frag;
} // CLOSES if ($options == \"N\")
elseif ($options == \"O\")
{ // OPENS elseif ($options == \"O\")
$pos_r = $seq->patposo($this->pattern, \"I\", $this->cutpos);
$ctr = 0;
foreach($pos_r as $currindex)
{
$ctr++;
if ($ctr == 1)
{
$frag[] = substr($seq->sequence, 0, $currindex + $this->cutpos);
$previndex = $currindex;
continue;
}
if (($currindex - $previndex) >= $this->cutpos)
{
$newcount = $currindex - $previndex;
$frag[] = substr($seq->sequence, $previndex + $this->cutpos, $newcount);
$previndex = $currindex;
}
else continue;
}
// The last (right-most) fragment.
$frag[] = substr($seq->sequence, $previndex + $this->cutpos);
return $frag;
} // CLOSES elseif ($options == \"O\")
} // CLOSES function CutSeq
/*
RestEn() is the constructor method for the RestEn class. It creates a new
RestEn object and initializes its properties accordingly.
RestEn() behavior:
If passed with make = \'custom\', object will be added to RestEn_DB.
If not, the function will attemp to retrieve data from RestEn_DB.
If unsuccessful in retrieving data, it will return an error flag.
*/
function RestEn($args)
{
global $RestEn_DB;
$arguments = parse_args($args);
if ($arguments[\"make\"] == \"custom\")
{
$this->name = $arguments[\"name\"];
$this->pattern = $arguments[\"pattern\"];
$this->cutpos = $arguments[\"cutpos\"];
$this->length = strlen($this->pattern);
$inner = array();
$inner[] = $arguments[\"pattern\"];
$inner[] = $arguments[\"cutpos\"];
$RestEn_DB[$this->name] = $inner;
}
else
{
// Look for given endonuclease in the RestEn_DB array.
$this->name = $arguments[\"name\"];
$temp = $this->GetPattern($this->name);
if ($temp == FALSE)
die(\"Cannot find entry in restriction endonuclease database.\");
else
{
$this->pattern = $temp;
$this->cutpos = $this->GetCutPos($this->name);
$this->length = strlen($this->pattern);
}
}
}
// GetPattern() returns the pattern associated with a given restriction endonuclease.
function GetPattern($RestEn_Name)
{
global $RestEn_DB;
return $RestEn_DB[$RestEn_Name][0];
}
// GetCutPos() returns the cutting position of the restriction enzyme object.
function GetCutPos($RestEn_Name)
{
global $RestEn_DB;
return $RestEn_DB[$RestEn_Name][1];
}
// GetLength() returns the length of the cutting pattern of the restriction enzyme object.
function GetLength($RestEn_Name = \"\")
{
global $RestEn_DB;
if ($RestEn_Name == \"\") return strlen($this->pattern);
else return strlen($RestEn_DB[$RestEn_Name][0]);
}
// FindRestEn() is a flexible method for searching the Restriction Enzyme database
// for entries meeting complex criteria. It returns an array of RestEn objects.
function FindRestEn($pattern = \"\", $cutpos = \"\", $plen = \"\")
{ // OPENS function FindRestEn().
global $RestEn_DB;
// 5 Cases: pattern only, cutpos only, patternlength only
// pattern and cutpos, cutpos and patternlength
$RestEn_List = array();
// Case 1: Pattern only
if (($pattern != \"\") and ($cutpos == \"\") and ($plen == \"\"))
{
foreach($RestEn_DB as $key => $value)
if ($value[0] == $pattern)
$RestEn_List[] = $key;
return $RestEn_List;
}
// Case 2: Cutpos only
if (($pattern == \"\") and ($cutpos != \"\") and ($plen == \"\"))
{ // OPENS if (($pattern == \"\") and ($cutpos != \"\") and ($plen == \"\"))
$firstchar = substr($cutpos, 0, 1);
$first2chars = substr($cutpos, 0, 2);
if (gettype($cutpos) == \"string\")
{ // OPENS if (gettype($cutpos) == \"string\")
if (preg_match(\"/^<\\d+$/\", $cutpos))
{
foreach($RestEn_DB as $key => $value)
if ($value[1] < (int) substr($cutpos,1))
$RestEn_List[] = $key;
return $RestEn_List;
}
elseif (preg_match(\"/^>\\d+$/\", $cutpos))
{
foreach($RestEn_DB as $key => $value)
if ($value[1] > (int) substr($cutpos,1))
$RestEn_List[] = $key;
return $RestEn_List;
}
elseif (preg_match(\"/^>=\\d+$/\", $cutpos))
{
foreach($RestEn_DB as $key => $value)
if ($value[1] >= (int) substr($cutpos,2))
$RestEn_List[] = $key;
return $RestEn_List;
}
elseif (preg_match(\"/^<=\\d+$/\", $cutpos))
{
foreach($RestEn_DB as $key => $value)
if ($value[1] <= (int) substr($cutpos,2))
$RestEn_List[] = $key;
return $RestEn_List;
}
elseif (preg_match(\"/^=\\d+$/\", $cutpos))
{
foreach($RestEn_DB as $key => $value)
if ($value[1] == substr($cutpos,1))
$RestEn_List[] = $key;
return $RestEn_List;
}
else die(\"Malformed cutpos parameter.\");
} // CLOSES if (gettype($cutpos) == \"string\")
elseif (gettype($cutpos) == \"integer\")
{
foreach($RestEn_DB as $key => $value)
if ($value[1] == $cutpos)
$RestEn_List[] = $key;
return $RestEn_List;
}
} // CLOSES if (($pattern == \"\") and ($cutpos != \"\") and ($plen == \"\"))
// Case 3: Patternlength only
if (($pattern == \"\") and ($cutpos == \"\") and ($plen != \"\"))
{
foreach($RestEn_DB as $key => $value)
if (strlen($value[0]) == $plen)
$RestEn_List[] = $key;
return $RestEn_List;
}
// Case 4: Pattern and cutpos only
if (($pattern != \"\") and ($cutpos != \"\") and ($plen == \"\"))
{
foreach($RestEn_DB as $key => $value)
if (($value[0] == $pattern) and ($value[1] == $cutpos))
$RestEn_List[] = $key;
return $RestEn_List;
}
// Case 5: Cutpos and plen only.
if (($pattern == \"\") and ($cutpos != \"\") and ($plen != \"\"))
{
foreach($RestEn_DB as $key => $value)
if (($value[1] == $cutpos) and (strlen($value[0]) == $plen))
$RestEn_List[] = $key;
return $RestEn_List;
}
die(\"Invalid combination of function parameters.\");
} // CLOSES function FindRestEn().
} // CLOSES RestEn Class
?>