Escolar Documentos
Profissional Documentos
Cultura Documentos
BioRuby
Introduo
Este um tutorial para usar Bioruby. (Requisitos: Ruby e o pacote Bioruby instalados).
Para verificar se o Ruby est instalado em seu computador e a verso instalada, digite
no prompt de comando:
ruby -v
Voc ir ver algo como:
ruby 1.8.7(2011-06-30 patchlevel 352) [i386-mingw32]
Caso no esteja instalado, use o gerenciador de instalao do Ruby, que voc pode
baixar no website http://rubyinstaller.org/downloads/
Para instalar o Bioruby via RubyGems, basta inserir a linha abaixo no prompt de
comando (Conexo de Internet fundamental):
gem install bio
Caso no seja possvel a instalao devido falta de internet, mas conseguiu baixar
o pacote bioruby (em outro momento) atravs do site http://rubygems.org/gems/bio. Direcione
o prompt de comando at o diretrio do pacote baixado e execute a seguinte linha:
Testando Bioruby
Exemplo 01
require 'rubygems' #Chamada de biblioteca de pacotes
require 'bio' #Chamada do arquivo contendo as classes bioruby
seq = Bio::Sequence::NA.new("atgcatgcaaaa") #Objeto seq da classe Bio::Sequence::NA
sendo criado com parmetro
puts seq.complement #imprime o complemento do objeto seq
#> "ttttgcatgcat"
puts seq.complement.reverse
#> " tacgtacgtttt"
O mtodo inspect muito parecido com o to_s, exceto pelo fato de que a string
retornada tenta mostrar para voc o cdigo em ruby que est construindo o objeto que voc
passou.
/continuao do exemplo 01
seq = Bio::Sequence::NA.new("atgcatgcaaaa") #novo objeto da Classe Bio::Sequence
p seq.complement # imprime a cadeia complementar
p seq.subseq(3,8) # pega subsequncia da posio 3 at 8
p seq.gc_percent #percentual de bases G e C
p seq.composition # Composio da sequncia, nmero de cada base nitrogenada
p seq.translate #Traduo em aa. (Imprime a primeira letra)
p seq.translate(2) # Traduo a partir da 2 base, usando a tabela padro 1.
p seq.translate(1,11) # Traduo a partir da 1 base, usando a tabela 11.
p seq.translate.codes # Traduo em aa (Imprime as trs primeiras letras)
p seq.translate.names #Traduo em aa (Imprime os nomes completos)
p seq.translate.composition #Quantitativo de aa traduzidos
p seq.translate.molecular_weight #Massa molecular unidade u (igual a 1/12 da massa
do istopo carbono-12)
p seq.complement.translate #Traduo do complemento
p seq.codon_usage #Quantidade de cdons traduzidos
DEFINITIONS* = {
1
2
3
4
5
6
9
10
11
12
13
14
15
16
21
22
23
}
*Definies das tabelas de cdons distintas contidas no arquivo codontable.rb
Smbolos ambguos
Em uma sequncia, a representao Y indica C ou T, R indica A ou G, W indica A ou T, S indica G ou
C, K indica T ou G, M indica A ou C, N indica qualquer base. Neste caso, deve-se converter em
expresso regular.
Exemplo 02:
require 'rubygems'
require 'bio'
#Criao de um objeto da classe Bio::Sequence::NA contendo smbolos ambguos
ambiguous_seq = Bio::Sequence::NA.new("atgcyrwskmbdhvn")
p ambiguous_seq
#Converter a sequncia para um objeto Regexp
p ambiguous_seq.to_re
#Anote o resultado desta linha de comando
Exemplo 03:
require 'rubygems'
require 'bio'
#Exemplo de correspondncia de uma sequncia simples em uma sequncia ambgua
#Criao de um novo objeto da classe Bio::Sequence::NA com parmetro ATY, convertido
em expresso regular
att_or_atc = Bio::Sequence::NA.new("aty").to_re
# A seguir, trs modos de verificao de correspondncia
# Criao de objeto da classe Bio::Sequence:NA com parmetro ATT
teste = Bio::Sequence::NA.new(att)
#Imprime Corresponde se att_or_atc combina com teste
puts "Corresponde" if att_or_atc.match(teste)
#Imprime Corresponde, tambm se teste combina com att_or_atc
puts "Corresponde, tambm" if teste.match(att_or_atc)
#Estrutura de condio: Se teste combina com att_or_atc ento imprime Tambm,
corresponde
if teste =~ att_or_atc
Paulo Adrian Assuno ftpauloadrian@gmail.com / Marta Rodrigues - martabiotec@yahoo.com.br
require 'rubygems'
require 'bio'
# Criao de um objeto da classe Bio::Sequence::NA com parmetro do tipo string
dna = Bio::Sequence::NA.new("satcggtcggctta")
# Criao de um objeto da classe Bio::Sequence::AA com parmetro do tipo string
aa = Bio::Sequence::AA.new("AGFAVENDSA")
# Checar se a sequncia contm caracteres ilegais (diferente de ATCGU)
p dna.illegal_bases # Anote o resultado
# Traduo e Concatenao da sequncia de DNA sequncia de Aminocidos
nova_sequencia = aa + dna.translate
p newseq #Anote o resultado
require 'rubygems'
require 'bio'
# Criao do objeto dna da classe Bio::Sequence::NA com parmetro ATGC
dna = Bio::Sequence::NA.new("atgc")
p dna
str = dna.to_s
puts str
#Anote o resultado
require 'rubygems'
require 'bio'
# Criao de um objeto dna da classe Bio::Sequence::NA
dna = Bio::Sequence::NA.new("atgccgaatcgtaa")
Paulo Adrian Assuno ftpauloadrian@gmail.com / Marta Rodrigues - martabiotec@yahoo.com.br
require 'rubygems'
require 'bio'
# Criao de um objeto seq da classe Bio::Sequence::NA
seq = Bio::Sequence::NA.new("atggct")
# Adiciona "cc" ao final da sequncia
seq += Bio::Sequence::NA.new("cc")
p seq #Imprime a nova sequncia
# Adiciona tt no incio da sequncia
seq = Bio::Sequence::NA.new("tt") + seq
p seq # Imprime a nova sequncia
# Adiciona aca na posio 4
seq[3,0] = Bio::Sequence::NA.new("aca")
p seq # Imprime a nova sequncia
# Sobrescrever a partir da posio 2 at 4, com ggg
seq[1,3] = Bio::Sequence::NA.new("ggg")
p seq # Imprime a nova sequncia
# Deletar as 5 bases iniciais
seq[0,5] = ""
p seq # Imprime a nova sequncia
#Substituir nas posies 2 e 3 com aa e inserir tt
seq[1,2] = Bio::Sequence::NA.new("aa") + Bio::Sequence::NA.new("tt")
p seq # Imprime a nova sequncia
Exemplo 08
require 'rubygems'
require 'bio'
# Criao do objeto seq1 da classe Bio::Sequence::NA com 100 bases.
seq1 = Bio::Sequence::NA.new("aatgacccgt" * 10)
# Nomeia esta sequncia como testseq e imprime em Formato FASTA
puts seq1.to_fasta("testseq", 60) # Limita a impresso de 60 bases por linha
Exemplo 09
require 'rubygems'
require 'bio'
fasta_string = ">gi|398365175|ref|NP_009718.3| Cdc28p [Saccharomyces cerevisiae
S288c]
gagtttgatcctggctcaggacgaacgctggcggcgtgcttaacacatgcaagtcgagcggtaaggccct
#Criao de novo objeto f da classe Bio::FastaFormat com fasta_string como parmetro
f = Bio::FastaFormat.new(fasta_string)
puts f.entry #Imprime toda a sequncia incluindo a linha de definio
puts f.entry_id #Imprime somente o identificador
puts f.definition #Imprime somente a linha de definio
puts f.seq #Imprime somente a sequncia de bases
puts f.length #Imprime o tamanho da sequncia, quantidade total de bases
puts f.aaseq #Converte para classe Bio:Sequence::aa
puts f.aaseq.composition #O mtodo composition no est presente na classe
FastaFormat, por isso a converso para outra classe. Imprime a quantidade de cada base.
require 'rubygems'
require 'bio'
# A classe Bio::FlatFile utilizada para ler arquivo contendo dados biolgicos, detectando
automaticamente o formato de dados.
#Cada sequncia do arquivo FASTA ser tratada pelo objeto seq, a linha de comando a
seguir, com o bloco DO significa A cada sequncia do arquivo FAA
Paulo Adrian Assuno ftpauloadrian@gmail.com / Marta Rodrigues - martabiotec@yahoo.com.br
Bio::FlatFile.open(File.open(nome_arquivo.fasta)).each_entry do |seq|
#Voc pode imprimir cada mtodo da seq como no exemplo anterior. Ex:
puts seq.definition #Imprime somente a linha de definio
puts seq.seq #Imprime somente a sequncia de bases
puts ************ #Para separar uma sequncia da outra
require 'rubygems'
require 'bio'
def distr(seq) #Define um mtodo distr com parmetro de entrada seq
x=seq.length.to_f # Varivel recebe o tamanho da seq convertido em FLOAT, ou seja,
fracionrio.
dist={} #Criao de um vetor (array) que pode armazenar diferentes valores
seq.composition.each do |base, total_cada_base| #A cada composio da sequncia
FAA, trabalhando nas variveis criadas numero_base e total_cada_base
dist[numero_base]=total_cada_base/x.to_f #Automaticamente, base se torna um
inteiro, recebendo o valor
end #Finaliza bloco DO
return dist # Retorna para o objeto com o valor do array
end #Finaliza o mtodo
#Criao de um objeto sequencia_teste da classe Bio::Sequence::NA com parmetro
sequencia_teste = Bio::Sequence::NA.new("atgcatgcaaaa")
p sequencia_teste #Imprime o valor do objeto criado
p sequencia_teste.composition # Imprime a quantidade de cada base existente na
sequencia
p distr(sequencia_teste) #Imprime o return dist do mtodo distr, que utilizar o valor de
sequencia_teste como parmetro