Class | Bio::Abif |
In: |
lib/bio/db/sanger_chromatogram/abif.rb
|
Parent: | SangerChromatogram |
This class inherits from the SangerChromatogram superclass. It captures the information contained within an ABIF format chromatogram file generated by DNA sequencing. See the SangerChromatogram class for usage.
DATA_TYPES | = | { 1 => 'byte', 2 => 'char', 3 => 'word', 4 => 'short', 5 => 'long', 7 => 'float', 8 => 'double', 10 => 'date', 11 => 'time', 18 => 'pString', 19 => 'cString', 12 => 'thumb', 13 => 'bool', 6 => 'rational', 9 => 'BCD', 14 => 'point', 15 => 'rect', 16 => 'vPoint', 17 => 'vRect', 20 => 'tag', 128 => 'deltaComp', 256 => 'LZWComp', 384 => 'deltaLZW', 1024 => 'user'} |
PACK_TYPES | = | { 'byte' => 'C', 'char' => 'c', 'word' => 'n', 'short' => 'n', 'long' => 'N', 'date' => 'nCC', 'time' => 'CCCC', 'pString' => 'CA*', 'cString' => 'Z*', 'float' => 'g', 'double' => 'G', 'bool' => 'C', 'thumb' => 'NNCC', 'rational' => 'NN', 'point' => 'nn', 'rect' => 'nnnn', 'vPoint' => 'NN', 'vRect' => 'NNNN', 'tag' => 'NN'} |
see SangerChromatogram class for how to create an Abif object and its usage
# File lib/bio/db/sanger_chromatogram/abif.rb, line 37 37: def initialize(string) 38: header = string.slice(0,128) 39: # read in header info 40: @chromatogram_type, @version, @directory_tag_name, @directory_tag_number, @directory_element_type, @directory_element_size, @directory_number_of_elements, @directory_data_size, @directory_data_offset, @directory_data_handle= header.unpack("a4 n a4 N n n N N N N") 41: @version = @version/100.to_f 42: get_directory_entries(string) 43: # get sequence 44: @sequence = @directory_entries["PBAS"][1].data.map{|char| char.chr.downcase}.join("") 45: #get peak indices 46: @peak_indices = @directory_entries["PLOC"][1].data 47: #get qualities 48: @qualities = @directory_entries["PCON"][1].data 49: # get sample title 50: @sample_title = @directory_entries["SMPL"][1].data 51: @directory_entries["PDMF"].size > 2 ? @dye_mobility = @directory_entries["PDMF"][2].data : @dye_mobility = @directory_entries["PDMF"][1].data 52: #get trace data 53: @chemistry = @directory_entries["phCH"][1].data 54: base_order = @directory_entries["FWO_"][1].data.map{|char| char.chr.downcase} 55: (9..12).each do |data_index| 56: self.instance_variable_set("@#{base_order[data_index-9]}trace", @directory_entries["DATA"][data_index].data) 57: end 58: 59: end