Class: Bio::Abif
- Inherits:
-
SangerChromatogram
- Object
- SangerChromatogram
- Bio::Abif
- Defined in:
- lib/bio/db/sanger_chromatogram/abif.rb
Overview
Description
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.
Defined Under Namespace
Classes: DirectoryEntry
Constant Summary collapse
- 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 =
User defined data types have tags numbers >= 1024
{ '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'}
Instance Attribute Summary collapse
-
#chemistry ⇒ Object
The chemistry used when sequencing e.g Dye terminators => ‘term.’ (String).
-
#sample_title ⇒ Object
The sample title as entered when sequencing the sample (String).
Attributes inherited from SangerChromatogram
#atrace, #chromatogram_type, #ctrace, #dye_mobility, #gtrace, #peak_indices, #qualities, #sequence, #ttrace, #version
Instance Method Summary collapse
-
#data(name, tag_number = 1) ⇒ Object
Returns the data for the name.
-
#initialize(string) ⇒ Abif
constructor
see SangerChromatogram class for how to create an Abif object and its usage.
Methods inherited from SangerChromatogram
#complement, #complement!, open, #seq, #sequence_string, #to_biosequence
Constructor Details
#initialize(string) ⇒ Abif
see SangerChromatogram class for how to create an Abif object and its usage
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/bio/db/sanger_chromatogram/abif.rb', line 37 def initialize(string) header = string.slice(0,128) # read in header info @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") @version = @version/100.to_f get_directory_entries(string) # get sequence @sequence = @directory_entries["PBAS"][1].data.map{|char| char.chr.downcase}.join("") #get peak indices @peak_indices = @directory_entries["PLOC"][1].data #get qualities @qualities = @directory_entries["PCON"][1].data # get sample title @sample_title = @directory_entries["SMPL"][1].data @directory_entries["PDMF"].size > 2 ? @dye_mobility = @directory_entries["PDMF"][2].data : @dye_mobility = @directory_entries["PDMF"][1].data #get trace data @chemistry = @directory_entries["phCH"][1].data base_order = @directory_entries["FWO_"][1].data.map{|char| char.chr.downcase} (9..12).each do |data_index| self.instance_variable_set("@#{base_order[data_index-9]}trace", @directory_entries["DATA"][data_index].data) end end |
Instance Attribute Details
#chemistry ⇒ Object
The chemistry used when sequencing e.g Dye terminators => ‘term.’ (String)
34 35 36 |
# File 'lib/bio/db/sanger_chromatogram/abif.rb', line 34 def chemistry @chemistry end |
#sample_title ⇒ Object
The sample title as entered when sequencing the sample (String)
32 33 34 |
# File 'lib/bio/db/sanger_chromatogram/abif.rb', line 32 def sample_title @sample_title end |
Instance Method Details
#data(name, tag_number = 1) ⇒ Object
Returns the data for the name. If not found, returns nil.
Arguments:
-
(required) name: (String) name of the data
-
(required) tag_number: (Integer) tag number (default 1)
- Returns
-
any data type or nil
68 69 70 71 |
# File 'lib/bio/db/sanger_chromatogram/abif.rb', line 68 def data(name, tag_number = 1) d = @directory_entries[name] d ? d[tag_number].data : nil end |