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
- 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)
-
- (Object) chemistry
The chemistry used when sequencing e.g Dye terminators => 'term.' (String).
-
- (Object) sample_title
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)
-
- (Object) data(name, tag_number = 1)
Returns the data for the name.
-
- (Abif) initialize(string)
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
- (Abif) initialize(string)
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
- (Object) chemistry
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 |
- (Object) sample_title
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
- (Object) data(name, tag_number = 1)
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 |