class GffHit

Public Instance Methods

report(hit,parent,seqid,id,name_mode,seq) click to toggle source
# File lib/gene_assembler/gff_hit.rb, line 4
def report(hit,parent,seqid,id,name_mode,seq)
        hit_text=[]
        feature_parent=hit.name #Parent par las demas caracteristicas
        if name_mode=='l'
                feature_parent=feature_parent+'_'+hit.type
        end
        parent_tag=nil
        if !parent.nil?# si hay parent, hit se comporta como una estructura tipo proteina, o secuencia nucleotidica. En caso contrario pasara a ser un contig hijo de otro contig ya escrito
                parent_tag="Parent=#{parent};"
                name=hit.name
                feature_parent=id
        else
                name=id
                feature_parent=id                    
        end
        hit_seq=nil
        if !seq.nil?
                hit_seq="seq=#{seq};"
        end
        strand='+'
        if hit.reversed
                strand='-'
        end
        ident="Perc_Qidentities=#{hit.q_p_ident};"
        if hit.q_p_ident.nil?
                ident=nil
        end
        conserved="Perc_Qconserved=#{hit.q_p_conserved};"
        if hit.q_p_conserved.nil?
                conserved=nil
        end
        description=nil
        if !hit.description.nil?
                description="Note=#{hit.description.gsub(';','_')};" 
        end
        if hit.source.nil?
                hit.source='Unknown'
        end
        text="#{seqid}\t#{hit.source}\t#{hit.type}\t#{hit.first_hsp.q_beg}\t#{hit.last_hsp.q_end}\t.\t#{strand}\t.\tID=#{name};#{parent_tag}Name=#{name};#{hit_seq}#{description}#{ident}#{conserved}"
        hit_text << text
        gff_hsp=GffHsp.new
        if hit.hsp_count>1 #Desarrollar si el hit presenta varias coincidencias parciales
                hit.each_hsp_with_index{|hsp,n|
                        hit_text << gff_hsp.report(hsp,name,seqid,n,hit.type,hit.source)
                }
        end
        return hit_text,feature_parent
end