From: martinahansen Date: Tue, 17 Aug 2010 13:50:14 +0000 (+0000) Subject: replacing read_fasta with ruby version X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=3d4f036898772b3040207caf1ec9794c0b33959a;p=biopieces.git replacing read_fasta with ruby version git-svn-id: http://biopieces.googlecode.com/svn/trunk@1063 74ccb610-7750-0410-82ae-013aeee3265d --- diff --git a/code_ruby/Maasha/lib/doc/classes/Fasta.html b/code_ruby/Maasha/lib/doc/classes/Fasta.html new file mode 100644 index 0000000..8a9c706 --- /dev/null +++ b/code_ruby/Maasha/lib/doc/classes/Fasta.html @@ -0,0 +1,241 @@ + + + + Class: Fasta [RDoc Documentation] + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
ClassFasta
In: + + + + + fasta.rb + + + + +
+ +
Parent: + + Object + +
+
+ + +
+ +
+ +
+ + +
+

Methods

+ +
+ + each   + + get_entry   + + new   + + open   + +
+
+ +
+ + + +
+

Included Modules

+ +
+ + Enumerable + +
+
+ +
+ + + + + + +
+ +

Public Class methods

+ + +
+ + + + +
+ +
+
+ + +
+ + + + +
+ +

+Class method allowing open to be used on files. See File.open. +

+ +
+
+ + +

Public Instance methods

+ + +
+ + + + +
+ +

+Iterator method for parsing FASTA enries. +

+ +
+
+ + +
+ + + + +
+ +

+Method to get the next FASTA entry form an ios and return this as a Seq object. If no entry is found or eof then nil is +returned. +

+ +
+
+ + + +
+ + + + +
+ +
+

[Validate]

+
+ + + diff --git a/code_ruby/Maasha/lib/doc/classes/Fasta.src/M000031.html b/code_ruby/Maasha/lib/doc/classes/Fasta.src/M000031.html new file mode 100644 index 0000000..c9a4be0 --- /dev/null +++ b/code_ruby/Maasha/lib/doc/classes/Fasta.src/M000031.html @@ -0,0 +1,28 @@ + + + + open (Fasta) + + + + +
# File fasta.rb, line 33
+  def self.open(*args)
+    ios   = File.open(*args)
+    fasta = self.new(ios)
+
+    if block_given?
+      begin
+        yield fasta
+      ensure
+        ios.close
+      end
+
+      return true
+    else
+      return fasta
+    end
+  end
+ + diff --git a/code_ruby/Maasha/lib/doc/classes/Fasta.src/M000032.html b/code_ruby/Maasha/lib/doc/classes/Fasta.src/M000032.html new file mode 100644 index 0000000..ad1c045 --- /dev/null +++ b/code_ruby/Maasha/lib/doc/classes/Fasta.src/M000032.html @@ -0,0 +1,16 @@ + + + + new (Fasta) + + + + +
# File fasta.rb, line 50
+  def initialize(io, type=nil)
+    @io   = io
+    @type = type
+  end
+ + diff --git a/code_ruby/Maasha/lib/doc/classes/Fasta.src/M000033.html b/code_ruby/Maasha/lib/doc/classes/Fasta.src/M000033.html new file mode 100644 index 0000000..40d2bc9 --- /dev/null +++ b/code_ruby/Maasha/lib/doc/classes/Fasta.src/M000033.html @@ -0,0 +1,17 @@ + + + + each (Fasta) + + + + +
# File fasta.rb, line 56
+  def each
+    while entry = get_entry do
+      yield entry
+    end
+  end
+ + diff --git a/code_ruby/Maasha/lib/doc/classes/Fasta.src/M000034.html b/code_ruby/Maasha/lib/doc/classes/Fasta.src/M000034.html new file mode 100644 index 0000000..62a8104 --- /dev/null +++ b/code_ruby/Maasha/lib/doc/classes/Fasta.src/M000034.html @@ -0,0 +1,32 @@ + + + + get_entry (Fasta) + + + + +
# File fasta.rb, line 64
+  def get_entry
+    block = @io.gets($/ + '>')
+    return nil if block.nil?
+
+    block.chomp!($/ + '>')
+
+    (seq_name, seq) = block.split($/, 2)
+
+    raise FastaError, "Bad FASTA format" if seq_name.nil? or seq.nil?
+
+    entry          = Seq.new
+    entry.type     = @type.nil? ? nil : @type.downcase
+    entry.seq      = seq.gsub(/\s/, '')
+    entry.seq_name = seq_name.sub(/^>/, '').rstrip
+
+    raise FastaError, "Bad FASTA format" if entry.seq_name.empty?
+    raise FastaError, "Bad FASTA format" if entry.seq.empty?
+
+    entry
+  end
+ + diff --git a/code_ruby/Maasha/lib/doc/classes/FastaError.html b/code_ruby/Maasha/lib/doc/classes/FastaError.html new file mode 100644 index 0000000..d188d55 --- /dev/null +++ b/code_ruby/Maasha/lib/doc/classes/FastaError.html @@ -0,0 +1,117 @@ + + + + Class: FastaError [RDoc Documentation] + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
ClassFastaError
In: + + + + + fasta.rb + + + + +
+ +
Parent: + + StandardError + +
+
+ + +
+ +
+ +
+

+Error class for all exceptions to do with FASTA. +

+ +
+ +
+ + +
+ + + +
+ + + + + + + + + +
+ +
+

[Validate]

+
+ + + diff --git a/code_ruby/Maasha/lib/doc/classes/Seq.src/M000001.html b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000001.html new file mode 100644 index 0000000..9817e7f --- /dev/null +++ b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000001.html @@ -0,0 +1,15 @@ + + + + length (Seq) + + + + +
# File seq.rb, line 11
+  def length
+    self.seq.nil? ? 0 : self.seq.length
+  end
+ + diff --git a/code_ruby/Maasha/lib/doc/classes/Seq.src/M000003.html b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000003.html new file mode 100644 index 0000000..bb35b7f --- /dev/null +++ b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000003.html @@ -0,0 +1,15 @@ + + + + is_dna (Seq) + + + + +
# File seq.rb, line 18
+  def is_dna
+    self.type == 'dna'
+  end
+ + diff --git a/code_ruby/Maasha/lib/doc/classes/Seq.src/M000004.html b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000004.html new file mode 100644 index 0000000..1ab276a --- /dev/null +++ b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000004.html @@ -0,0 +1,15 @@ + + + + is_rna (Seq) + + + + +
# File seq.rb, line 22
+  def is_rna
+    self.type == 'rna'
+  end
+ + diff --git a/code_ruby/Maasha/lib/doc/classes/Seq.src/M000005.html b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000005.html new file mode 100644 index 0000000..445bd31 --- /dev/null +++ b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000005.html @@ -0,0 +1,15 @@ + + + + is_protein (Seq) + + + + +
# File seq.rb, line 26
+  def is_protein
+    self.type == 'protein'
+  end
+ + diff --git a/code_ruby/Maasha/lib/doc/classes/Seq.src/M000006.html b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000006.html new file mode 100644 index 0000000..0d2143f --- /dev/null +++ b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000006.html @@ -0,0 +1,18 @@ + + + + to_rna (Seq) + + + + +
# File seq.rb, line 31
+  def to_rna
+    raise SeqError, "Cannot transcribe 0 length sequence" if self.length == 0
+    raise SeqError, "Cannot transcribe sequence type: #{self.type}" unless self.is_dna
+    self.type = 'rna'
+    self.seq.tr!('Tt','Uu')
+  end
+ + diff --git a/code_ruby/Maasha/lib/doc/classes/Seq.src/M000007.html b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000007.html new file mode 100644 index 0000000..84cddb0 --- /dev/null +++ b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000007.html @@ -0,0 +1,18 @@ + + + + to_dna (Seq) + + + + +
# File seq.rb, line 39
+  def to_dna
+    raise SeqError, "Cannot reverse-transcribe 0 length sequence" if self.length == 0
+    raise SeqError, "Cannot reverse-transcribe sequence type: #{self.type}" unless self.is_rna
+    self.type = 'dna'
+    self.seq.tr!('Uu','Tt')
+  end
+ + diff --git a/code_ruby/Maasha/lib/doc/classes/Seq.src/M000008.html b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000008.html new file mode 100644 index 0000000..cde9366 --- /dev/null +++ b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000008.html @@ -0,0 +1,23 @@ + + + + complement (Seq) + + + + +
# File seq.rb, line 47
+  def complement
+    raise SeqError, "Cannot complement 0 length sequence" if self.length == 0
+
+    if self.is_dna
+      self.seq.tr!( 'AGCUTRYWSMKHDVBNagcutrywsmkhdvbn', 'TCGAAYRWSKMDHBVNtcgaayrwskmdhbvn' )
+    elsif self.is_rna
+      self.seq.tr!( 'AGCUTRYWSMKHDVBNagcutrywsmkhdvbn', 'UCGAAYRWSKMDHBVNucgaayrwskmdhbvn' )
+    else
+      raise SeqError, "Cannot complement sequence type: #{self.type}"
+    end
+  end
+ + diff --git a/code_ruby/Maasha/lib/doc/classes/Seq.src/M000009.html b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000009.html new file mode 100644 index 0000000..fc415c3 --- /dev/null +++ b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000009.html @@ -0,0 +1,32 @@ + + + + generate (Seq) + + + + +
# File seq.rb, line 60
+  def generate(length,type)
+    raise SeqError, "Cannot generate negative sequence length: #{length}" if length <= 0
+
+    case type.downcase
+    when "dna"
+      alph = DNA
+    when "rna"
+      alph = RNA
+    when "protein"
+      alph = PROTEIN
+    else
+      raise SeqError, "Unknown sequence type: #{type}"
+    end
+
+    seq_new   = Array.new(length) { alph[rand(alph.size)] }.join("")
+    self.seq  = seq_new
+    self.type = type.downcase
+
+    seq_new
+  end
+ + diff --git a/code_ruby/Maasha/lib/doc/classes/Seq.src/M000037.html b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000037.html new file mode 100644 index 0000000..bb35b7f --- /dev/null +++ b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000037.html @@ -0,0 +1,15 @@ + + + + is_dna (Seq) + + + + +
# File seq.rb, line 18
+  def is_dna
+    self.type == 'dna'
+  end
+ + diff --git a/code_ruby/Maasha/lib/doc/classes/Seq.src/M000038.html b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000038.html new file mode 100644 index 0000000..1ab276a --- /dev/null +++ b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000038.html @@ -0,0 +1,15 @@ + + + + is_rna (Seq) + + + + +
# File seq.rb, line 22
+  def is_rna
+    self.type == 'rna'
+  end
+ + diff --git a/code_ruby/Maasha/lib/doc/classes/Seq.src/M000039.html b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000039.html new file mode 100644 index 0000000..445bd31 --- /dev/null +++ b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000039.html @@ -0,0 +1,15 @@ + + + + is_protein (Seq) + + + + +
# File seq.rb, line 26
+  def is_protein
+    self.type == 'protein'
+  end
+ + diff --git a/code_ruby/Maasha/lib/doc/classes/Seq.src/M000040.html b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000040.html new file mode 100644 index 0000000..0d2143f --- /dev/null +++ b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000040.html @@ -0,0 +1,18 @@ + + + + to_rna (Seq) + + + + +
# File seq.rb, line 31
+  def to_rna
+    raise SeqError, "Cannot transcribe 0 length sequence" if self.length == 0
+    raise SeqError, "Cannot transcribe sequence type: #{self.type}" unless self.is_dna
+    self.type = 'rna'
+    self.seq.tr!('Tt','Uu')
+  end
+ + diff --git a/code_ruby/Maasha/lib/doc/classes/Seq.src/M000041.html b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000041.html new file mode 100644 index 0000000..84cddb0 --- /dev/null +++ b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000041.html @@ -0,0 +1,18 @@ + + + + to_dna (Seq) + + + + +
# File seq.rb, line 39
+  def to_dna
+    raise SeqError, "Cannot reverse-transcribe 0 length sequence" if self.length == 0
+    raise SeqError, "Cannot reverse-transcribe sequence type: #{self.type}" unless self.is_rna
+    self.type = 'dna'
+    self.seq.tr!('Uu','Tt')
+  end
+ + diff --git a/code_ruby/Maasha/lib/doc/classes/Seq.src/M000042.html b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000042.html new file mode 100644 index 0000000..85e6cb2 --- /dev/null +++ b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000042.html @@ -0,0 +1,21 @@ + + + + to_bp (Seq) + + + + +
# File seq.rb, line 47
+  def to_bp
+    raise SeqError, "Missing seq_name" if self.seq_name.nil?
+    raise SeqError, "Missing seq"      if self.seq.nil?
+    record             = {}
+    record['SEQ_NAME'] = self.seq_name
+    record['SEQ']      = self.seq
+    record['SEQ_LEN']  = self.length
+    record
+  end
+ + diff --git a/code_ruby/Maasha/lib/doc/classes/Seq.src/M000043.html b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000043.html new file mode 100644 index 0000000..19a14ca --- /dev/null +++ b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000043.html @@ -0,0 +1,23 @@ + + + + complement (Seq) + + + + +
# File seq.rb, line 58
+  def complement
+    raise SeqError, "Cannot complement 0 length sequence" if self.length == 0
+
+    if self.is_dna
+      self.seq.tr!( 'AGCUTRYWSMKHDVBNagcutrywsmkhdvbn', 'TCGAAYRWSKMDHBVNtcgaayrwskmdhbvn' )
+    elsif self.is_rna
+      self.seq.tr!( 'AGCUTRYWSMKHDVBNagcutrywsmkhdvbn', 'UCGAAYRWSKMDHBVNucgaayrwskmdhbvn' )
+    else
+      raise SeqError, "Cannot complement sequence type: #{self.type}"
+    end
+  end
+ + diff --git a/code_ruby/Maasha/lib/doc/classes/Seq.src/M000044.html b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000044.html new file mode 100644 index 0000000..7b22124 --- /dev/null +++ b/code_ruby/Maasha/lib/doc/classes/Seq.src/M000044.html @@ -0,0 +1,31 @@ + + + + generate (Seq) + + + + +
# File seq.rb, line 71
+  def generate(length,type)
+    raise SeqError, "Cannot generate negative sequence length: #{length}" if length <= 0
+
+    case type.downcase
+    when "dna"
+      alph = DNA
+    when "rna"
+      alph = RNA
+    when "protein"
+      alph = PROTEIN
+    else
+      raise SeqError, "Unknown sequence type: #{type}"
+    end
+
+    seq_new   = Array.new(length) { alph[rand(alph.size)] }.join("")
+    self.seq  = seq_new
+    self.type = type.downcase
+    seq_new
+  end
+ + diff --git a/code_ruby/Maasha/lib/doc/classes/SeqError.html b/code_ruby/Maasha/lib/doc/classes/SeqError.html new file mode 100644 index 0000000..192b171 --- /dev/null +++ b/code_ruby/Maasha/lib/doc/classes/SeqError.html @@ -0,0 +1,117 @@ + + + + Class: SeqError [RDoc Documentation] + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
ClassSeqError
In: + + + + + seq.rb + + + + +
+ +
Parent: + + StandardError + +
+
+ + +
+ +
+ +
+

+Error class for all exceptions to do with Seq. +

+ +
+ +
+ + +
+ + + +
+ + + + + + + + + +
+ +
+

[Validate]

+
+ + + diff --git a/code_ruby/Maasha/lib/doc/files/fasta_rb.html b/code_ruby/Maasha/lib/doc/files/fasta_rb.html new file mode 100644 index 0000000..6f2167f --- /dev/null +++ b/code_ruby/Maasha/lib/doc/files/fasta_rb.html @@ -0,0 +1,110 @@ + + + + File: fasta.rb [RDoc Documentation] + + + + + + + + + +
+

fasta.rb

+ + + + + + + + + +
Path:fasta.rb + +
Last Update:2010-08-17 15:43:01 +0200
+
+ + +
+ +
+ +
+

+This program is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2 of the License, or (at your option) +any later version. +

+ +
+ +
+

Required files

+ +
+ + seq   + +
+
+ +
+ + +
+ + + +
+ + + + + + + + + +
+ +
+

[Validate]

+
+ + +