class Hsp

Attributes

align_len[RW]
gaps[RW]
ident[RW]
q_beg[RW]
q_end[RW]
s_beg[RW]
s_end[RW]
score[RW]
type[RW]

Public Class Methods

new(q_beg, q_end, s_beg, s_end, align_len, score, ident, gaps) click to toggle source
# File lib/gene_assembler/hsp.rb, line 3
def initialize (q_beg, q_end, s_beg, s_end, align_len, score, ident, gaps)
        @q_beg=q_beg #Inicio en query
        @q_end=q_end #Fin en query
        @s_beg=s_beg #Inicio en subject
        @s_end=s_end #Fin en subject
        @align_len=align_len #TamaƱo de la secuencia alineada
        #@bit_score=bit_score
        @score=score
        @ident=ident
        @gaps=gaps
        @type=nil
end

Public Instance Methods

compare(hsp) click to toggle source
# File lib/gene_assembler/hsp.rb, line 16
def compare(hsp) #Compara hsps distintintos a nivel del subject para saber si son el mismo
        coverage=0
        if self.s_beg==hsp.s_end && self.s_end==hsp.s_end
                coverage=1
        elsif self.s_beg>=hsp.s_beg && self.s_end<hsp.s_end #Caso de q el self este dentro de hsp
                coverage=1
        elsif self.s_beg<=hsp.s_beg && self.s_end>hsp.s_beg && (self.s_end-hsp.s_beg).abs>1
                ext=self.s_end-hsp.s_beg*1.00 # El producto obliga a usar la clase float para impedir q trunque el resultado
                coverage=ext/(self.s_end-self.s_beg)
        elsif self.s_beg<hsp.s_end && self.s_end>=hsp.s_end && (self.s_beg-hsp.s_end).abs>1 #Ultima condicion impide q de como mismo exon el compartir un aa q realmente esta partido entre 2 exones
                ext=hsp.s_end-self.s_beg*1.00
                coverage=ext/(self.s_end-self.s_beg)                 
        end
        return coverage
end
compare_q(hsp) click to toggle source
# File lib/gene_assembler/hsp.rb, line 32
def compare_q(hsp) #Compara hsps distintintos a nivel del query para saber si son el mismo
  coverage=0
  if self.q_beg==hsp.q_end && self.q_end==hsp.q_end
    coverage=1
  elsif self.q_beg>=hsp.q_beg && self.q_end<hsp.q_end #Caso de q el self este dentro de hsp
    coverage=1
  elsif self.q_beg<=hsp.q_beg && self.q_end>hsp.q_beg && (self.q_end-hsp.q_beg).abs>1
    ext=self.q_end-hsp.q_beg*1.00 # El producto obliga a usar la clase float para impedir q trunque el resultado
    coverage=ext/(self.q_end-self.q_beg)
  elsif self.q_beg<hsp.q_end && self.q_end>=hsp.q_end && (self.q_beg-hsp.q_end).abs>1 #Ultima condicion impide q de como mismo exon el compartir un aa q realmente esta partido entre 2 exones
    ext=hsp.q_end-self.q_beg*1.00
    coverage=ext/(self.q_end-self.q_beg)      
  end
  return coverage
end
length_q() click to toggle source
# File lib/gene_assembler/hsp.rb, line 49
def length_q #Longitud del hsp en la query
        length=@q_end-@q_beg
        return length
end
modified_coordenates(add) click to toggle source
# File lib/gene_assembler/hsp.rb, line 78
def modified_coordenates(add)
@q_beg+=add
        @q_end+=add
end
overlap_with(last_hsp) click to toggle source
# File lib/gene_assembler/hsp.rb, line 91
def overlap_with(last_hsp)
  overlap=0
  diference=self.s_beg-last_hsp.s_end
  #puts "#{self.s_beg} - #{last_hsp.s_end} = #{diference}"
  if diference<0
    overlap=diference
  end
  return overlap
end
rev(length_hsp) click to toggle source
# File lib/gene_assembler/hsp.rb, line 54
def rev(length_hsp) # Cambia coordenadas de reversas a directas
        @q_beg=length_hsp-@q_beg #Inicio en query
        @q_end=length_hsp-@q_end #Fin en query
        @reversed=FALSE
end
rev_coord(contig_length) click to toggle source
# File lib/gene_assembler/hsp.rb, line 83
def rev_coord(contig_length)
        puts '---------------------------------'
        puts @q_beg.to_s+' '+@q_end.to_s
        @q_beg=contig_length-@q_beg+1
        @q_end=contig_length-@q_end+1
        puts @q_beg.to_s+' '+@q_end.to_s
end
within?(hsp,long) click to toggle source
# File lib/gene_assembler/hsp.rb, line 60
def within?(hsp,long) #Mira si un hsp esta dentro de otro o si hay overlap parcial entre los mismos
        over=0
        if self.q_beg<=hsp.q_beg && self.q_end>=hsp.q_end
                over=1
        end
        if self.s_beg<=hsp.s_beg && self.s_end>=hsp.s_end
                over=1
        end
        if over == 0
                self_coverage=(self.s_end-self.s_beg)*1.00/long
                hsp_coverage=(hsp.s_end-hsp.s_beg)*1.00/long
                if hsp_coverage>(1-self_coverage) #Si el coverage del hsp en mayor que el resto que deja el self, se da como overlap
                        over=1
                end
        end
        return over
end