<?xml version="1.0" encoding="ascii"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Bio.GA.Mutation.Simple</title> <link rel="stylesheet" href="epydoc.css" type="text/css" /> <script type="text/javascript" src="epydoc.js"></script> </head> <body bgcolor="white" text="black" link="blue" vlink="#204080" alink="#204080"> <!-- ==================== NAVIGATION BAR ==================== --> <table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> <tr valign="middle"> <!-- Tree link --> <th> <a href="module-tree.html">Trees</a> </th> <!-- Index link --> <th> <a href="identifier-index.html">Indices</a> </th> <!-- Help link --> <th> <a href="help.html">Help</a> </th> <th class="navbar" width="100%"></th> </tr> </table> <table width="100%" cellpadding="0" cellspacing="0"> <tr valign="top"> <td width="100%"> <span class="breadcrumbs"> <a href="Bio-module.html">Package Bio</a> :: <a href="Bio.GA-module.html">Package GA</a> :: <a href="Bio.GA.Mutation-module.html">Package Mutation</a> :: Module Simple </span> </td> <td> <table cellpadding="0" cellspacing="0"> <!-- hide/show private --> <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" onclick="toggle_private();">hide private</a>]</span></td></tr> <tr><td align="right"><span class="options" >[<a href="frames.html" target="_top">frames</a >] | <a href="Bio.GA.Mutation.Simple-pysrc.html" target="_top">no frames</a>]</span></td></tr> </table> </td> </tr> </table> <h1 class="epydoc">Source Code for <a href="Bio.GA.Mutation.Simple-module.html">Module Bio.GA.Mutation.Simple</a></h1> <pre class="py-src"> <a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-docstring">"""Perform Simple mutations on an organism's genome.</tt> </tt> <a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># standard modules</tt> </tt> <a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">import</tt> <tt class="py-name">random</tt> </tt> <a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"> </tt> <a name="SinglePositionMutation"></a><div id="SinglePositionMutation-def"><a name="L6"></a><tt class="py-lineno"> 6</tt> <a class="py-toggle" href="#" id="SinglePositionMutation-toggle" onclick="return toggle('SinglePositionMutation');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="Bio.GA.Mutation.Simple.SinglePositionMutation-class.html">SinglePositionMutation</a><tt class="py-op">:</tt> </tt> </div><div id="SinglePositionMutation-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="SinglePositionMutation-expanded"><a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"> <tt class="py-docstring">"""Perform a conversion mutation, but only at a single point in the genome.</tt> </tt> <a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> <a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-docstring"> This does not randomize the genome as much as ConversionMutation, since</tt> </tt> <a name="L10"></a><tt class="py-lineno">10</tt> <tt class="py-line"><tt class="py-docstring"> only one change is allowed per genome at the specified mutation rate.</tt> </tt> <a name="L11"></a><tt class="py-lineno">11</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> <a name="SinglePositionMutation.__init__"></a><div id="SinglePositionMutation.__init__-def"><a name="L12"></a><tt class="py-lineno">12</tt> <a class="py-toggle" href="#" id="SinglePositionMutation.__init__-toggle" onclick="return toggle('SinglePositionMutation.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="Bio.GA.Mutation.Simple.SinglePositionMutation-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">mutation_rate</tt> <tt class="py-op">=</tt> <tt class="py-number">0.001</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="SinglePositionMutation.__init__-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="SinglePositionMutation.__init__-expanded"><a name="L13"></a><tt class="py-lineno">13</tt> <tt class="py-line"> <tt class="py-docstring">"""Initialize a mutator.</tt> </tt> <a name="L14"></a><tt class="py-lineno">14</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> <a name="L15"></a><tt class="py-lineno">15</tt> <tt class="py-line"><tt class="py-docstring"> Arguments:</tt> </tt> <a name="L16"></a><tt class="py-lineno">16</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> <a name="L17"></a><tt class="py-lineno">17</tt> <tt class="py-line"><tt class="py-docstring"> o mutation_rate - The chance of a mutation happening once in the</tt> </tt> <a name="L18"></a><tt class="py-lineno">18</tt> <tt class="py-line"><tt class="py-docstring"> genome.</tt> </tt> <a name="L19"></a><tt class="py-lineno">19</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> <a name="L20"></a><tt class="py-lineno">20</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mutation_rate</tt> <tt class="py-op">=</tt> <tt class="py-name">mutation_rate</tt> </tt> <a name="L21"></a><tt class="py-lineno">21</tt> <tt class="py-line"> <tt class="py-comment"># a random number generator to test if we have a mutation</tt> </tt> <a name="L22"></a><tt class="py-lineno">22</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mutation_rand</tt> <tt class="py-op">=</tt> <tt class="py-name">random</tt><tt class="py-op">.</tt><tt class="py-name">Random</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L23"></a><tt class="py-lineno">23</tt> <tt class="py-line"> <tt class="py-comment"># a random number generator to switch to a new alphabet letter</tt> </tt> <a name="L24"></a><tt class="py-lineno">24</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_switch_rand</tt> <tt class="py-op">=</tt> <tt class="py-name">random</tt><tt class="py-op">.</tt><tt class="py-name">Random</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L25"></a><tt class="py-lineno">25</tt> <tt class="py-line"> <tt class="py-comment"># a random number generator to find the mutation position</tt> </tt> <a name="L26"></a><tt class="py-lineno">26</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pos_rand</tt> <tt class="py-op">=</tt> <tt class="py-name">random</tt><tt class="py-op">.</tt><tt class="py-name">Random</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> </div><a name="L27"></a><tt class="py-lineno">27</tt> <tt class="py-line"> </tt> <a name="SinglePositionMutation.mutate"></a><div id="SinglePositionMutation.mutate-def"><a name="L28"></a><tt class="py-lineno">28</tt> <a class="py-toggle" href="#" id="SinglePositionMutation.mutate-toggle" onclick="return toggle('SinglePositionMutation.mutate');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="Bio.GA.Mutation.Simple.SinglePositionMutation-class.html#mutate">mutate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">organism</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="SinglePositionMutation.mutate-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="SinglePositionMutation.mutate-expanded"><a name="L29"></a><tt class="py-lineno">29</tt> <tt class="py-line"> <tt class="py-docstring">"""Mutate the organisms genome.</tt> </tt> <a name="L30"></a><tt class="py-lineno">30</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> <a name="L31"></a><tt class="py-lineno">31</tt> <tt class="py-line"> <tt class="py-name">mutated_org</tt> <tt class="py-op">=</tt> <tt id="link-0" class="py-name" targets="Method Bio.GenBank._FeatureConsumer.organism()=Bio.GenBank._FeatureConsumer-class.html#organism,Method Bio.GenBank._RecordConsumer.organism()=Bio.GenBank._RecordConsumer-class.html#organism,Variable Bio.expressions.embl.embl65.organism=Bio.expressions.embl.embl65-module.html#organism,Variable Bio.expressions.genbank.organism=Bio.expressions.genbank-module.html#organism"><a title="Bio.GenBank._FeatureConsumer.organism Bio.GenBank._RecordConsumer.organism Bio.expressions.embl.embl65.organism Bio.expressions.genbank.organism" class="py-name" href="#" onclick="return doclink('link-0', 'organism', 'link-0');">organism</a></tt><tt class="py-op">.</tt><tt id="link-1" class="py-name" targets="Method Bio.Crystal.Crystal.copy()=Bio.Crystal.Crystal-class.html#copy,Method Bio.GA.Organism.Organism.copy()=Bio.GA.Organism.Organism-class.html#copy,Method Bio.GenBank.NCBIDictionary.copy()=Bio.GenBank.NCBIDictionary-class.html#copy,Method Bio.PDB.Vector'.Vector.copy()=Bio.PDB.Vector%27.Vector-class.html#copy,Method Bio.Prosite.ExPASyDictionary.copy()=Bio.Prosite.ExPASyDictionary-class.html#copy,Method Bio.Prosite.Pattern.PrositeTerm.copy()=Bio.Prosite.Pattern.PrositeTerm-class.html#copy,Method Bio.Prosite.Prodoc.ExPASyDictionary.copy()=Bio.Prosite.Prodoc.ExPASyDictionary-class.html#copy,Method Bio.PubMed.Dictionary.copy()=Bio.PubMed.Dictionary-class.html#copy,Method Bio.SwissProt.SProt.ExPASyDictionary.copy()=Bio.SwissProt.SProt.ExPASyDictionary-class.html#copy,Method Martel.Expression.Any.copy()=Martel.Expression.Any-class.html#copy,Method Martel.Expression.AnyEol.copy()=Martel.Expression.AnyEol-class.html#copy,Method Martel.Expression.Assert.copy()=Martel.Expression.Assert-class.html#copy,Method Martel.Expression.AtBeginning.copy()=Martel.Expression.AtBeginning-class.html#copy,Method Martel.Expression.AtEnd.copy()=Martel.Expression.AtEnd-class.html#copy,Method Martel.Expression.Debug.copy()=Martel.Expression.Debug-class.html#copy,Method Martel.Expression.Dot.copy()=Martel.Expression.Dot-class.html#copy,Method Martel.Expression.Expression.copy()=Martel.Expression.Expression-class.html#copy,Method Martel.Expression.ExpressionList.copy()=Martel.Expression.ExpressionList-class.html#copy,Method Martel.Expression.FastFeature.copy()=Martel.Expression.FastFeature-class.html#copy,Method Martel.Expression.Group.copy()=Martel.Expression.Group-class.html#copy,Method Martel.Expression.GroupRef.copy()=Martel.Expression.GroupRef-class.html#copy,Method Martel.Expression.HeaderFooter.copy()=Martel.Expression.HeaderFooter-class.html#copy,Method Martel.Expression.Literal.copy()=Martel.Expression.Literal-class.html#copy,Method Martel.Expression.MaxRepeat.copy()=Martel.Expression.MaxRepeat-class.html#copy,Method Martel.Expression.NullOp.copy()=Martel.Expression.NullOp-class.html#copy,Method Martel.Expression.ParseRecords.copy()=Martel.Expression.ParseRecords-class.html#copy,Method Martel.Expression.PassThrough.copy()=Martel.Expression.PassThrough-class.html#copy,Method Martel.Expression.Str.copy()=Martel.Expression.Str-class.html#copy,Method Martel.IterParser.IterHeaderFooter.copy()=Martel.IterParser.IterHeaderFooter-class.html#copy,Method Martel.IterParser.IterRecords.copy()=Martel.IterParser.IterRecords-class.html#copy,Method Martel.Iterator.IteratorRecords.copy()=Martel.Iterator.IteratorRecords-class.html#copy,Method Martel.Parser.HeaderFooterParser.copy()=Martel.Parser.HeaderFooterParser-class.html#copy,Method Martel.Parser.Parser.copy()=Martel.Parser.Parser-class.html#copy,Method Martel.Parser.RecordParser.copy()=Martel.Parser.RecordParser-class.html#copy"><a title="Bio.Crystal.Crystal.copy Bio.GA.Organism.Organism.copy Bio.GenBank.NCBIDictionary.copy Bio.PDB.Vector'.Vector.copy Bio.Prosite.ExPASyDictionary.copy Bio.Prosite.Pattern.PrositeTerm.copy Bio.Prosite.Prodoc.ExPASyDictionary.copy Bio.PubMed.Dictionary.copy Bio.SwissProt.SProt.ExPASyDictionary.copy Martel.Expression.Any.copy Martel.Expression.AnyEol.copy Martel.Expression.Assert.copy Martel.Expression.AtBeginning.copy Martel.Expression.AtEnd.copy Martel.Expression.Debug.copy Martel.Expression.Dot.copy Martel.Expression.Expression.copy Martel.Expression.ExpressionList.copy Martel.Expression.FastFeature.copy Martel.Expression.Group.copy Martel.Expression.GroupRef.copy Martel.Expression.HeaderFooter.copy Martel.Expression.Literal.copy Martel.Expression.MaxRepeat.copy Martel.Expression.NullOp.copy Martel.Expression.ParseRecords.copy Martel.Expression.PassThrough.copy Martel.Expression.Str.copy Martel.IterParser.IterHeaderFooter.copy Martel.IterParser.IterRecords.copy Martel.Iterator.IteratorRecords.copy Martel.Parser.HeaderFooterParser.copy Martel.Parser.Parser.copy Martel.Parser.RecordParser.copy" class="py-name" href="#" onclick="return doclink('link-1', 'copy', 'link-1');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L32"></a><tt class="py-lineno">32</tt> <tt class="py-line"> <tt class="py-name">gene_choices</tt> <tt class="py-op">=</tt> <tt class="py-name">mutated_org</tt><tt class="py-op">.</tt><tt class="py-name">genome</tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Variable Bio.Prosite.Pattern.Prosite.alphabet=Bio.Prosite.Pattern.Prosite-class.html#alphabet,Function Bio.Std.alphabet()=Bio.Std-module.html#alphabet"><a title="Bio.Prosite.Pattern.Prosite.alphabet Bio.Std.alphabet" class="py-name" href="#" onclick="return doclink('link-2', 'alphabet', 'link-2');">alphabet</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Variable Bio.Alphabet.Alphabet.letters=Bio.Alphabet.Alphabet-class.html#letters,Variable Bio.Alphabet.IUPAC.ExtendedIUPACDNA.letters=Bio.Alphabet.IUPAC.ExtendedIUPACDNA-class.html#letters,Variable Bio.Alphabet.IUPAC.ExtendedIUPACProtein.letters=Bio.Alphabet.IUPAC.ExtendedIUPACProtein-class.html#letters,Variable Bio.Alphabet.IUPAC.IUPACAmbiguousDNA.letters=Bio.Alphabet.IUPAC.IUPACAmbiguousDNA-class.html#letters,Variable Bio.Alphabet.IUPAC.IUPACAmbiguousRNA.letters=Bio.Alphabet.IUPAC.IUPACAmbiguousRNA-class.html#letters,Variable Bio.Alphabet.IUPAC.IUPACProtein.letters=Bio.Alphabet.IUPAC.IUPACProtein-class.html#letters,Variable Bio.Alphabet.IUPAC.IUPACUnambiguousDNA.letters=Bio.Alphabet.IUPAC.IUPACUnambiguousDNA-class.html#letters,Variable Bio.Alphabet.IUPAC.IUPACUnambiguousRNA.letters=Bio.Alphabet.IUPAC.IUPACUnambiguousRNA-class.html#letters,Variable Bio.Alphabet.Reduced.HPModel.letters=Bio.Alphabet.Reduced.HPModel-class.html#letters,Variable Bio.Alphabet.Reduced.Murphy10.letters=Bio.Alphabet.Reduced.Murphy10-class.html#letters,Variable Bio.Alphabet.Reduced.Murphy15.letters=Bio.Alphabet.Reduced.Murphy15-class.html#letters,Variable Bio.Alphabet.Reduced.Murphy4.letters=Bio.Alphabet.Reduced.Murphy4-class.html#letters,Variable Bio.Alphabet.Reduced.Murphy8.letters=Bio.Alphabet.Reduced.Murphy8-class.html#letters,Variable Bio.Alphabet.Reduced.PC5.letters=Bio.Alphabet.Reduced.PC5-class.html#letters,Variable Bio.Alphabet.SecondaryStructure.letters=Bio.Alphabet.SecondaryStructure-class.html#letters,Variable Bio.Alphabet.SingleLetterAlphabet.letters=Bio.Alphabet.SingleLetterAlphabet-class.html#letters,Variable Bio.Alphabet.ThreeLetterProtein.letters=Bio.Alphabet.ThreeLetterProtein-class.html#letters,Variable Bio.NeuralNetwork.Gene.Schema.SchemaDNAAlphabet.letters=Bio.NeuralNetwork.Gene.Schema.SchemaDNAAlphabet-class.html#letters,Variable Bio.SeqUtils.ProteinX.letters=Bio.SeqUtils.ProteinX-class.html#letters"><a title="Bio.Alphabet.Alphabet.letters Bio.Alphabet.IUPAC.ExtendedIUPACDNA.letters Bio.Alphabet.IUPAC.ExtendedIUPACProtein.letters Bio.Alphabet.IUPAC.IUPACAmbiguousDNA.letters Bio.Alphabet.IUPAC.IUPACAmbiguousRNA.letters Bio.Alphabet.IUPAC.IUPACProtein.letters Bio.Alphabet.IUPAC.IUPACUnambiguousDNA.letters Bio.Alphabet.IUPAC.IUPACUnambiguousRNA.letters Bio.Alphabet.Reduced.HPModel.letters Bio.Alphabet.Reduced.Murphy10.letters Bio.Alphabet.Reduced.Murphy15.letters Bio.Alphabet.Reduced.Murphy4.letters Bio.Alphabet.Reduced.Murphy8.letters Bio.Alphabet.Reduced.PC5.letters Bio.Alphabet.SecondaryStructure.letters Bio.Alphabet.SingleLetterAlphabet.letters Bio.Alphabet.ThreeLetterProtein.letters Bio.NeuralNetwork.Gene.Schema.SchemaDNAAlphabet.letters Bio.SeqUtils.ProteinX.letters" class="py-name" href="#" onclick="return doclink('link-3', 'letters', 'link-3');">letters</a></tt> </tt> <a name="L33"></a><tt class="py-lineno">33</tt> <tt class="py-line"> </tt> <a name="L34"></a><tt class="py-lineno">34</tt> <tt class="py-line"> <tt class="py-name">mutation_chance</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mutation_rand</tt><tt class="py-op">.</tt><tt class="py-name">random</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L35"></a><tt class="py-lineno">35</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">mutation_chance</tt> <tt class="py-op"><=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mutation_rate</tt><tt class="py-op">:</tt> </tt> <a name="L36"></a><tt class="py-lineno">36</tt> <tt class="py-line"> <tt class="py-comment"># pick a gene position to mutate at</tt> </tt> <a name="L37"></a><tt class="py-lineno">37</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">mutation_pos</tt> <tt class="py-op">=</tt> \ </tt> <a name="L38"></a><tt class="py-lineno">38</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pos_rand</tt><tt class="py-op">.</tt><tt class="py-name">choice</tt><tt class="py-op">(</tt><tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">mutated_org</tt><tt class="py-op">.</tt><tt class="py-name">genome</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L39"></a><tt class="py-lineno">39</tt> <tt class="py-line"> </tt> <a name="L40"></a><tt class="py-lineno">40</tt> <tt class="py-line"> <tt class="py-comment"># get a new letter to replace the position at</tt> </tt> <a name="L41"></a><tt class="py-lineno">41</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">new_letter</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_switch_rand</tt><tt class="py-op">.</tt><tt class="py-name">choice</tt><tt class="py-op">(</tt><tt class="py-name">gene_choices</tt><tt class="py-op">)</tt> </tt> <a name="L42"></a><tt class="py-lineno">42</tt> <tt class="py-line"> </tt> <a name="L43"></a><tt class="py-lineno">43</tt> <tt class="py-line"> <tt class="py-name">mutated_org</tt><tt class="py-op">.</tt><tt class="py-name">genome</tt><tt class="py-op">[</tt><tt class="py-name">mutation_pos</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">new_letter</tt> </tt> <a name="L44"></a><tt class="py-lineno">44</tt> <tt class="py-line"> </tt> <a name="L45"></a><tt class="py-lineno">45</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">mutated_org</tt> </tt> </div></div><a name="L46"></a><tt class="py-lineno">46</tt> <tt class="py-line"> </tt> <a name="ConversionMutation"></a><div id="ConversionMutation-def"><a name="L47"></a><tt class="py-lineno">47</tt> <a class="py-toggle" href="#" id="ConversionMutation-toggle" onclick="return toggle('ConversionMutation');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="Bio.GA.Mutation.Simple.ConversionMutation-class.html">ConversionMutation</a><tt class="py-op">:</tt> </tt> </div><div id="ConversionMutation-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="ConversionMutation-expanded"><a name="L48"></a><tt class="py-lineno">48</tt> <tt class="py-line"> <tt class="py-docstring">"""Potentially mutate any item to another in the alphabet.</tt> </tt> <a name="L49"></a><tt class="py-lineno">49</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> <a name="L50"></a><tt class="py-lineno">50</tt> <tt class="py-line"><tt class="py-docstring"> This just performs switching mutation -- changing one gene of a genome</tt> </tt> <a name="L51"></a><tt class="py-lineno">51</tt> <tt class="py-line"><tt class="py-docstring"> to any other potential gene, at some defined frequency. If the organism</tt> </tt> <a name="L52"></a><tt class="py-lineno">52</tt> <tt class="py-line"><tt class="py-docstring"> is determined to mutate, then the alphabet item it is equally likely</tt> </tt> <a name="L53"></a><tt class="py-lineno">53</tt> <tt class="py-line"><tt class="py-docstring"> to switch to any other letter in the alphabet.</tt> </tt> <a name="L54"></a><tt class="py-lineno">54</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> <a name="ConversionMutation.__init__"></a><div id="ConversionMutation.__init__-def"><a name="L55"></a><tt class="py-lineno">55</tt> <a class="py-toggle" href="#" id="ConversionMutation.__init__-toggle" onclick="return toggle('ConversionMutation.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="Bio.GA.Mutation.Simple.ConversionMutation-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">mutation_rate</tt> <tt class="py-op">=</tt> <tt class="py-number">0.001</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="ConversionMutation.__init__-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="ConversionMutation.__init__-expanded"><a name="L56"></a><tt class="py-lineno">56</tt> <tt class="py-line"> <tt class="py-docstring">"""Inititialize a mutator.</tt> </tt> <a name="L57"></a><tt class="py-lineno">57</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> <a name="L58"></a><tt class="py-lineno">58</tt> <tt class="py-line"><tt class="py-docstring"> Arguments:</tt> </tt> <a name="L59"></a><tt class="py-lineno">59</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> <a name="L60"></a><tt class="py-lineno">60</tt> <tt class="py-line"><tt class="py-docstring"> o mutation_rate -- The chance of a mutation happening at any</tt> </tt> <a name="L61"></a><tt class="py-lineno">61</tt> <tt class="py-line"><tt class="py-docstring"> position in the genome.</tt> </tt> <a name="L62"></a><tt class="py-lineno">62</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> <a name="L63"></a><tt class="py-lineno">63</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mutation_rate</tt> <tt class="py-op">=</tt> <tt class="py-name">mutation_rate</tt> </tt> <a name="L64"></a><tt class="py-lineno">64</tt> <tt class="py-line"> <tt class="py-comment"># a random number generator to test if we have a mutation</tt> </tt> <a name="L65"></a><tt class="py-lineno">65</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mutation_rand</tt> <tt class="py-op">=</tt> <tt class="py-name">random</tt><tt class="py-op">.</tt><tt class="py-name">Random</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L66"></a><tt class="py-lineno">66</tt> <tt class="py-line"> <tt class="py-comment"># a random number generator to switch to a new alphabet letter</tt> </tt> <a name="L67"></a><tt class="py-lineno">67</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_switch_rand</tt> <tt class="py-op">=</tt> <tt class="py-name">random</tt><tt class="py-op">.</tt><tt class="py-name">Random</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> </div><a name="L68"></a><tt class="py-lineno">68</tt> <tt class="py-line"> </tt> <a name="ConversionMutation.mutate"></a><div id="ConversionMutation.mutate-def"><a name="L69"></a><tt class="py-lineno">69</tt> <a class="py-toggle" href="#" id="ConversionMutation.mutate-toggle" onclick="return toggle('ConversionMutation.mutate');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="Bio.GA.Mutation.Simple.ConversionMutation-class.html#mutate">mutate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">organism</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="ConversionMutation.mutate-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="ConversionMutation.mutate-expanded"><a name="L70"></a><tt class="py-lineno">70</tt> <tt class="py-line"> <tt class="py-docstring">"""Mutate the organisms genome.</tt> </tt> <a name="L71"></a><tt class="py-lineno">71</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> <a name="L72"></a><tt class="py-lineno">72</tt> <tt class="py-line"> <tt class="py-name">mutated_org</tt> <tt class="py-op">=</tt> <tt id="link-4" class="py-name"><a title="Bio.GenBank._FeatureConsumer.organism Bio.GenBank._RecordConsumer.organism Bio.expressions.embl.embl65.organism Bio.expressions.genbank.organism" class="py-name" href="#" onclick="return doclink('link-4', 'organism', 'link-0');">organism</a></tt><tt class="py-op">.</tt><tt id="link-5" class="py-name"><a title="Bio.Crystal.Crystal.copy Bio.GA.Organism.Organism.copy Bio.GenBank.NCBIDictionary.copy Bio.PDB.Vector'.Vector.copy Bio.Prosite.ExPASyDictionary.copy Bio.Prosite.Pattern.PrositeTerm.copy Bio.Prosite.Prodoc.ExPASyDictionary.copy Bio.PubMed.Dictionary.copy Bio.SwissProt.SProt.ExPASyDictionary.copy Martel.Expression.Any.copy Martel.Expression.AnyEol.copy Martel.Expression.Assert.copy Martel.Expression.AtBeginning.copy Martel.Expression.AtEnd.copy Martel.Expression.Debug.copy Martel.Expression.Dot.copy Martel.Expression.Expression.copy Martel.Expression.ExpressionList.copy Martel.Expression.FastFeature.copy Martel.Expression.Group.copy Martel.Expression.GroupRef.copy Martel.Expression.HeaderFooter.copy Martel.Expression.Literal.copy Martel.Expression.MaxRepeat.copy Martel.Expression.NullOp.copy Martel.Expression.ParseRecords.copy Martel.Expression.PassThrough.copy Martel.Expression.Str.copy Martel.IterParser.IterHeaderFooter.copy Martel.IterParser.IterRecords.copy Martel.Iterator.IteratorRecords.copy Martel.Parser.HeaderFooterParser.copy Martel.Parser.Parser.copy Martel.Parser.RecordParser.copy" class="py-name" href="#" onclick="return doclink('link-5', 'copy', 'link-1');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L73"></a><tt class="py-lineno">73</tt> <tt class="py-line"> </tt> <a name="L74"></a><tt class="py-lineno">74</tt> <tt class="py-line"> <tt class="py-name">gene_choices</tt> <tt class="py-op">=</tt> <tt class="py-name">mutated_org</tt><tt class="py-op">.</tt><tt class="py-name">genome</tt><tt class="py-op">.</tt><tt id="link-6" class="py-name"><a title="Bio.Prosite.Pattern.Prosite.alphabet Bio.Std.alphabet" class="py-name" href="#" onclick="return doclink('link-6', 'alphabet', 'link-2');">alphabet</a></tt><tt class="py-op">.</tt><tt id="link-7" class="py-name"><a title="Bio.Alphabet.Alphabet.letters Bio.Alphabet.IUPAC.ExtendedIUPACDNA.letters Bio.Alphabet.IUPAC.ExtendedIUPACProtein.letters Bio.Alphabet.IUPAC.IUPACAmbiguousDNA.letters Bio.Alphabet.IUPAC.IUPACAmbiguousRNA.letters Bio.Alphabet.IUPAC.IUPACProtein.letters Bio.Alphabet.IUPAC.IUPACUnambiguousDNA.letters Bio.Alphabet.IUPAC.IUPACUnambiguousRNA.letters Bio.Alphabet.Reduced.HPModel.letters Bio.Alphabet.Reduced.Murphy10.letters Bio.Alphabet.Reduced.Murphy15.letters Bio.Alphabet.Reduced.Murphy4.letters Bio.Alphabet.Reduced.Murphy8.letters Bio.Alphabet.Reduced.PC5.letters Bio.Alphabet.SecondaryStructure.letters Bio.Alphabet.SingleLetterAlphabet.letters Bio.Alphabet.ThreeLetterProtein.letters Bio.NeuralNetwork.Gene.Schema.SchemaDNAAlphabet.letters Bio.SeqUtils.ProteinX.letters" class="py-name" href="#" onclick="return doclink('link-7', 'letters', 'link-3');">letters</a></tt> </tt> <a name="L75"></a><tt class="py-lineno">75</tt> <tt class="py-line"> </tt> <a name="L76"></a><tt class="py-lineno">76</tt> <tt class="py-line"> <tt class="py-comment"># potentially mutate any gene in the genome</tt> </tt> <a name="L77"></a><tt class="py-lineno">77</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">for</tt> <tt class="py-name">gene_index</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">mutated_org</tt><tt class="py-op">.</tt><tt class="py-name">genome</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L78"></a><tt class="py-lineno">78</tt> <tt class="py-line"> <tt class="py-name">mutation_chance</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mutation_rand</tt><tt class="py-op">.</tt><tt class="py-name">random</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L79"></a><tt class="py-lineno">79</tt> <tt class="py-line"> <tt class="py-comment"># if we have a mutation</tt> </tt> <a name="L80"></a><tt class="py-lineno">80</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">mutation_chance</tt> <tt class="py-op"><=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mutation_rate</tt><tt class="py-op">:</tt> </tt> <a name="L81"></a><tt class="py-lineno">81</tt> <tt class="py-line"> <tt class="py-comment"># get a new letter</tt> </tt> <a name="L82"></a><tt class="py-lineno">82</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">new_letter</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_switch_rand</tt><tt class="py-op">.</tt><tt class="py-name">choice</tt><tt class="py-op">(</tt><tt class="py-name">gene_choices</tt><tt class="py-op">)</tt> </tt> <a name="L83"></a><tt class="py-lineno">83</tt> <tt class="py-line"> <tt class="py-name">mutated_org</tt><tt class="py-op">.</tt><tt class="py-name">genome</tt><tt class="py-op">[</tt><tt class="py-name">gene_index</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">new_letter</tt> </tt> <a name="L84"></a><tt class="py-lineno">84</tt> <tt class="py-line"> </tt> <a name="L85"></a><tt class="py-lineno">85</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">mutated_org</tt> </tt> </div></div><a name="L86"></a><tt class="py-lineno">86</tt> <tt class="py-line"> </tt><script type="text/javascript"> <!-- expandto(location.href); // --> </script> </pre> <br /> <!-- ==================== NAVIGATION BAR ==================== --> <table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> <tr valign="middle"> <!-- Tree link --> <th> <a href="module-tree.html">Trees</a> </th> <!-- Index link --> <th> <a href="identifier-index.html">Indices</a> </th> <!-- Help link --> <th> <a href="help.html">Help</a> </th> <th class="navbar" width="100%"></th> </tr> </table> <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> Generated by Epydoc 3.0.1 on Mon Sep 15 09:26:49 2008 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" >http://epydoc.sourceforge.net</a> </td> </tr> </table> <script type="text/javascript"> <!-- // Private objects are initially displayed (because if // javascript is turned off then we want them to be // visible); but by default, we want to hide them. So hide // them unless we have a cookie that says to show them. checkCookie(); // --> </script> </body> </html>