Package weblogolib :: Module colorscheme

Source Code for Module weblogolib.colorscheme

  1   
  2  #  Copyright (c) 2003-2005 The Regents of the University of California. 
  3  #  Copyright (c) 2005 Gavin E. Crooks 
  4   
  5  #  This software is distributed under the MIT Open Source License. 
  6  #  <http://www.opensource.org/licenses/mit-license.html> 
  7  # 
  8  #  Permission is hereby granted, free of charge, to any person obtaining a  
  9  #  copy of this software and associated documentation files (the "Software"), 
 10  #  to deal in the Software without restriction, including without limitation 
 11  #  the rights to use, copy, modify, merge, publish, distribute, sublicense, 
 12  #  and/or sell copies of the Software, and to permit persons to whom the 
 13  #  Software is furnished to do so, subject to the following conditions: 
 14  # 
 15  #  The above copyright notice and this permission notice shall be included 
 16  #  in all copies or substantial portions of the Software. 
 17  # 
 18  #  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  
 19  #  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,  
 20  #  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
 21  #  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER  
 22  #  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
 23  #  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN  
 24  #  THE SOFTWARE. 
 25   
 26  """ Popular color codings for nucleic and amino acids.  
 27   
 28  Classes: 
 29      ColorScheme -- A color scheme 
 30      ColorGroup   
 31       
 32       
 33  Generic 
 34      monochrome 
 35   
 36  Nucleotides 
 37      nucleotide 
 38      base pairing 
 39   
 40  Amino Acid 
 41      hydrophobicity 
 42      chemistry 
 43      charge 
 44      taylor 
 45   
 46  Status : Beta - Needs documentation. 
 47   
 48  """ 
 49  # Good online references include bioruby and the JalView alignment editor. 
 50  # Clamp, M., Cuff, J., Searle, S. M. and Barton, G. J. (2004),  
 51  # "The Jalview Java Alignment Editor," Bioinformatics, 12, 426-7 
 52  # http://www.jalview.org 
 53   
 54   
 55  from corebio import seq 
 56  from color import Color 
 57   
58 -class ColorScheme(object):
59 """ A coloring of an alphabet. 60 61 title : string -- A human readable description 62 defualt_color : Color -- 63 groups : list of color groups 64 alphabet : string -- The set of colored symbols 65 color -- A map between a symbol and a Coloring 66 67 68 """ 69
70 - def __init__(self, 71 groups = [], 72 title = "", 73 description = "", 74 default_color = "black", 75 alphabet = seq.generic_alphabet) :
76 """ """ 77 self.title= title 78 self.description = description 79 self.default_color = Color.from_string(default_color) 80 self.groups = groups 81 self.alphabet = alphabet 82 83 color = {} 84 for cg in groups : 85 for s in cg.symbols : 86 color[s] = cg.color 87 if s not in alphabet : 88 raise KeyError("Colored symbol does not exist in alphabet.") 89 self._color = color
90
91 - def color(self, symbol) :
92 if symbol in self._color : 93 return self._color[symbol] 94 return self.default_color
95
96 -class ColorGroup(object) :
97 """Associate a group of symbols with a color"""
98 - def __init__(self, symbols, color, description=None) :
99 self.symbols = symbols 100 self.color = Color.from_string(color) 101 self.description = description
102 103 104 105 monochrome = ColorScheme([]) # This list intentionally left blank 106 107 # From makelogo 108 nucleotide = ColorScheme([ 109 ColorGroup("G", "orange"), 110 ColorGroup("TU", "red"), 111 ColorGroup("C", "blue"), 112 ColorGroup("A", "green") 113 ]) 114 115 base_pairing = ColorScheme([ 116 ColorGroup("TAU", "darkorange", "Weak (2 Watson-Crick hydrogen bonds)"), 117 ColorGroup("GC", "blue", "Strong (3 Watson-Crick hydrogen bonds)")], 118 ) 119 120 # From Crooks2004c-Proteins-SeqStr.pdf 121 hydrophobicity = ColorScheme([ 122 ColorGroup( "RKDENQ", "black", "hydrophilic"), 123 ColorGroup( "SGHTAP", "green", "neutral" ), 124 ColorGroup( "YVMCLFIW", "blue", "hydrophobic") ], 125 alphabet = seq.unambiguous_protein_alphabet 126 ) 127 128 # from makelogo 129 chemistry = ColorScheme([ 130 ColorGroup( "GSTYC", "green", "polar"), 131 ColorGroup( "NQ", "purple", "neutral"), 132 ColorGroup( "KRH", "blue", "basic"), 133 ColorGroup( "DE", "red", "acidic"), 134 ColorGroup("PAWFLIMV", "black", "hydrophobic") ], 135 alphabet = seq.unambiguous_protein_alphabet 136 ) 137 138 charge = ColorScheme([ 139 ColorGroup("KRH", "blue", "Positive" ), 140 ColorGroup( "DE", "red", "Negative") ], 141 alphabet = seq.unambiguous_protein_alphabet 142 ) 143 144 145 taylor = ColorScheme([ 146 ColorGroup( 'A', '#CCFF00' ), 147 ColorGroup( 'C', '#FFFF00' ), 148 ColorGroup( 'D', '#FF0000'), 149 ColorGroup( 'E', '#FF0066' ), 150 ColorGroup( 'F', '#00FF66'), 151 ColorGroup( 'G', '#FF9900'), 152 ColorGroup( 'H', '#0066FF'), 153 ColorGroup( 'I', '#66FF00'), 154 ColorGroup( 'K', '#6600FF'), 155 ColorGroup( 'L', '#33FF00'), 156 ColorGroup( 'M', '#00FF00'), 157 ColorGroup( 'N', '#CC00FF'), 158 ColorGroup( 'P', '#FFCC00'), 159 ColorGroup( 'Q', '#FF00CC'), 160 ColorGroup( 'R', '#0000FF'), 161 ColorGroup( 'S', '#FF3300'), 162 ColorGroup( 'T', '#FF6600'), 163 ColorGroup( 'V', '#99FF00'), 164 ColorGroup( 'W', '#00CCFF'), 165 ColorGroup( 'Y', '#00FFCC')], 166 title = "Taylor", 167 description = "W. Taylor, Protein Engineering, Vol 10 , 743-746 (1997)", 168 alphabet = seq.unambiguous_protein_alphabet 169 ) 170