segunda-feira, 27 de fevereiro de 2012

Um guia compreensivo dos grandes genomas de animais: o que sabemos e para onde estamos indo.


Resumo: O estudo da diversidade de tamanhos de genomas é um campo cada vez maior e altamente relevante no atual cenário do sequenciamento de DNA, cada vez mais rápido e eficiente. Os tamanhos de genomas animais variam de 0,02 a 132,83 pg (1pg = 978Mb) mas a maioria dos genomas animais são pequenos, com tamanho máximo inferior a 5 pg. Animais com grandes genomas (>10 pg) estão espalhados entre os invertebrados (incluindo os Platelmintos, Crustáceos e Orthoptera) e também entre os vertebrados (incluindo os Actinopterygii, Chondrichthyes e alguns anfíbios). Neste artigo, vamos explorar as conexões entre tamanho do genoma com fenótipo, fisiologia e ecologia destes organismos. Discutimos também, alguns dos mecanismos moleculares de redução e expansão do genoma obtido através de estudos comparativos entre espécies com sequências genômicas completas e como isso pode se aplicar às espécies com grande genomas. Como a maioria dos genomas das espécies animais sequenciados até o momento são genomas pequenos (especialmente invertebrados), devido aos custos de sequenciamento e das dificuldades associada com montagens de genoma de grandes dimensões, uma compreensão da composição estrutural deste grandes genomas é necessária. Estudos utilizando sequenciamento de nova geração (NGS) estão sendo utilizados pela primeira vez em animais com grandes genomas. Tais análises usando baixa cobertura genômica estão oferecendo uma visão da composição de elementos repetitivos em animais com genomas mais complexos. Estudos futuros permitirão uma melhor compreensão dos fatores que levam à obesidade genômica em animais.

France Dufresne & Nicholas Jeffer


sábado, 18 de fevereiro de 2012

Além do Ateu e do Ateísmo

Somos todos ateus perante o deus do outro.

"O Homem é quem faz a religião, e não a religião que faz o Homem. A religião é auto consciência e sentimento do Homem. O Homem é o mundo do homem, o estado e a sociedade. O estado e a sociedade inventam a religião."
Carl Max




quarta-feira, 15 de fevereiro de 2012

Curiosidades do Universo com Stephen Hawking.


Deus criou o Universo? A ciência te oferece uma outra explicação. E acredite, você será capaz de entender! Aprendamos um pouco com o Prof. Stephen Hawking.




terça-feira, 14 de fevereiro de 2012

Script Codon Usage


Esse script carrega em um hash a tabela de codon usage (reference) de 6.222 ORF's de leveduras, depois conta a frequência de códons de um arquivo de genes (query) e compara a frequência de códons da query x reference.

Versão beta (com super auxílio do Rondon)


#!/usr/bin/perl
use strict;
use warnings;
use Bio::SeqIO;
# use diagnostics;

die "\nUSAGE::: perl $0 [query.fasta] [reference.fasta(optional)]\n\n" if !$ARGV[0];

#gera tabela de codon usage para a query
my $query_file = $ARGV[0];
my %aux_query1= %{usage ($query_file)};

open(FILE, 'table_yeast_usage_parsed.txt') or die;

my %table_usage;

foreach my $line (<FILE>){
    chomp $line;
    if    ( $line =~ /^Codon/ ) { next }
    elsif ( $line !~ /\w/   ) { next }
    my ($codon,$aa,$contagem,$fraction) = split ('\t', $line);
#     print "$fraction'\n";
    $table_usage{$codon}{aa}=$aa;
    $table_usage{$codon}{contagem}=$contagem;
    $table_usage{$codon}{fraction}=$fraction;
}

# my $contagem_total = %{%usage_reference};

my $ref = contagem_aa_totais( \%aux_query1 );
my %hash = %{$ref};

my $ref2 = gera_valor_normalizado_reference(\%hash);
my %fraction_query = %{$ref2};

foreach my $key(sort {$fraction_query{$a}{aa} cmp $fraction_query{$b}{aa}} keys %fraction_query){ #acessar os valores dentro do hash
     print "$key\t$fraction_query{$key}{aa}\t$fraction_query{$key}{normalizado}\t$table_usage{$key}{fraction}\n";
  }

close FILE;

exit;

sub contagem_aa_totais {
#Faz a contagem total das aparicoes dos aa pra normalizar os valores. Pega o hash de dados da Referencia e insere os resultados na mesma tabela.

        my $ref = shift;
        my %usage_reference = %{$ref};

        #Gera array com os aa usados
        my @aa;
        while (my ($codon, $ref) = each %usage_reference) {
                my %valores = %{$ref};
                foreach my $key (keys %valores){
                        if ($key eq "aa") { push @aa, $valores{$key} }
                }
        }

        #soma o total de cada aa
        foreach my $a (@aa) {
                my $sum = 0;
                #soma cada aa
                foreach my $codon (keys %usage_reference){
                        if ( $a eq $usage_reference{$codon}{aa} ) { $sum += $usage_reference{$codon}{contagem} }
                }
                #insere o valor no hash
                foreach my $codon (keys %usage_reference){
                        if ( $a eq $usage_reference{$codon}{aa} ) { $usage_reference{$codon}{aa_totais} = $sum }
                }
        }
        return \%usage_reference;
}

sub gera_valor_normalizado_reference {

        my $ref = shift;
my %usage_reference = %{$ref};

        foreach my $codon (keys %usage_reference) {
                $usage_reference{$codon}{normalizado} = $usage_reference{$codon}{contagem} / $usage_reference{$codon}{aa_totais};
        }
        return \%usage_reference;
}

sub conta_codons {
# conta os codons de um arquivo fasta
        my $file_name = shift;

        my $file_obj = Bio::SeqIO -> new ( -file => $file_name,
                                           -format => 'fasta'   );

        #gera hash com a quantidade de vezes que cada codon aparece.
        my %codons;
        while (my $inseq = $file_obj->next_seq) {
                        # grava cada seq na variavel $sequence
                my $sequence = $inseq->seq();
                #anda de 3 em 3 (tem q ver se da certo)
                for(my $i=0; $i < (length($sequence) - 2) ; $i += 3){
                my $codon = substr($sequence,$i,3);
                #se o codon for novo na tabela, ele recebe o valor 1
                        if (!defined $codons{$codon}) { $codons{$codon} = 1 }
                        # se ele for recorrente, apenas soma 1.
                        else { $codons{$codon}++; }
                }
        }
        return \%codons;
}

sub gera_valor_normalizado_query {
#insere na tabela da query, qual e a freq normalizada (em %) de cada codon
# essa subrotina recebe dois valores: has_query e hash_referencia

        my $ref_query = shift;
        my %usage_query = %{$ref_query};

my $ref_reference = shift;
  my %usage_reference = %{$ref_reference};

        foreach my $codon (keys %usage_query) {
                $usage_query{$codon}{freq_codon_normalizada} = $usage_reference{$codon}{normalizado};
        }
        return \%usage_query;
}

sub table_aa {
#Verifica e salva quais sao os aa dos codons e suas freq
        my $ref = shift;
        my %codons = %{$ref};

        my %usage;
        foreach my $codon (keys %codons) {

        if ( $codon =~ /GC./i)        { $usage{$codon}{aa}= "ala"; $usage{$codon}{contagem}= $codons{$codon}; }    # Alanine
     elsif ( $codon =~ /TG[TC]/i)     { $usage{$codon}{aa}= "cys"; $usage{$codon}{contagem}= $codons{$codon}; }    # Cysteine
     elsif ( $codon =~ /GA[TC]/i)     { $usage{$codon}{aa}= "aca"; $usage{$codon}{contagem}= $codons{$codon}; }    # Aspartic Acid
     elsif ( $codon =~ /GA[AG]/i)     { $usage{$codon}{aa}= "glu"; $usage{$codon}{contagem}= $codons{$codon}; }    # Glutamic Acid
     elsif ( $codon =~ /TT[TC]/i)     { $usage{$codon}{aa}= "phe"; $usage{$codon}{contagem}= $codons{$codon}; }    # Phenylalanine
     elsif ( $codon =~ /GG./i)        { $usage{$codon}{aa}= "gly"; $usage{$codon}{contagem}= $codons{$codon}; }    # Glycine
     elsif ( $codon =~ /CA[TC]/i)     { $usage{$codon}{aa}= "his"; $usage{$codon}{contagem}= $codons{$codon}; }    # Histidine
     elsif ( $codon =~ /AT[TCA]/i)    { $usage{$codon}{aa}= "iso"; $usage{$codon}{contagem}= $codons{$codon}; }    # Isoleucine
     elsif ( $codon =~ /AA[AG]/i)     { $usage{$codon}{aa}= "lys"; $usage{$codon}{contagem}= $codons{$codon}; }    # Lysine
     elsif ( $codon =~ /TT[AG]|CT./i) { $usage{$codon}{aa}= "leu"; $usage{$codon}{contagem}= $codons{$codon}; }    # Leucine
     elsif ( $codon =~ /ATG/i)        { $usage{$codon}{aa}= "met"; $usage{$codon}{contagem}= $codons{$codon}; }    # Methionine
     elsif ( $codon =~ /AA[TC]/i)     { $usage{$codon}{aa}= "asp"; $usage{$codon}{contagem}= $codons{$codon}; }    # Asparagine
     elsif ( $codon =~ /CC./i)        { $usage{$codon}{aa}= "pro"; $usage{$codon}{contagem}= $codons{$codon}; }    # Proline
     elsif ( $codon =~ /CA[AG]/i)     { $usage{$codon}{aa}= "glu"; $usage{$codon}{contagem}= $codons{$codon}; }    # Glutamine
     elsif ( $codon =~ /CG.|AG[AG]/i) { $usage{$codon}{aa}= "arg"; $usage{$codon}{contagem}= $codons{$codon}; }    # Arginine
     elsif ( $codon =~ /TC.|AG[TC]/i) { $usage{$codon}{aa}= "ser"; $usage{$codon}{contagem}= $codons{$codon}; }    # Serine
     elsif ( $codon =~ /AC./i)        { $usage{$codon}{aa}= "thr"; $usage{$codon}{contagem}= $codons{$codon}; }    # Threonine
     elsif ( $codon =~ /GT./i)        { $usage{$codon}{aa}= "val"; $usage{$codon}{contagem}= $codons{$codon}; }    # Valine
     elsif ( $codon =~ /TGG/i)        { $usage{$codon}{aa}= "try"; $usage{$codon}{contagem}= $codons{$codon}; }    # Tryptophan
     elsif ( $codon =~ /TA[TC]/i)     { $usage{$codon}{aa}= "tyr"; $usage{$codon}{contagem}= $codons{$codon}; }    # Tyrosine
     elsif ( $codon =~ /TA[AG]|TGA/i) { $usage{$codon}{aa}= "stp"; $usage{$codon}{contagem}= $codons{$codon}; }    # Stop
     else { $usage{$codon}{aa}= "err"; $usage{$codon}{contagem}= $codons{$codon}; } # base diferente
     }

     return \%usage;
}

sub usage {
#conta codons num arquivo fasta ou multifasta e gera tabela com codon, aa e freq e outros dados
my $query_file = shift;

#fre de codons
my %codons = %{conta_codons($query_file)};

#associa a contagem dos codons com os aminoacidos
my %usage = %{table_aa(\%codons)};

return \%usage;
}

quarta-feira, 8 de fevereiro de 2012

quinta-feira, 2 de fevereiro de 2012

O passado é uma possibilidade

Se podemos apenas saber que uma partícula viajou de um ponto A a um ponto B, mas não observamos o caminho que ela fez para chegar ao seu destino, é possível concluir que ela, simultaneamente, fez todos os trajetos possíveis para construir a trajetória. Esse é um princípio da mecânica quântica, que explica: se qualquer evento no passado não foi observado e registrado, ele é tão indefinido quanto um evento futuro. Dessa forma, não se pode dizer que ele aconteceu de determinada maneira, e sim de todas as maneiras possíveis ao mesmo tempo. Loucura, totalmente plausível do Stephen Hawking não?

Contagem de códons em um genoma, usando Perl.


Carreguei um arquivo multifasta de genes, contei as trincas de códons, e joguei num hash com os códons, aminoácidos e frequência de cada códon.


#!/usr/bin/perl
use Bio::SeqIO;
use strict;
use warnings;

my $ref1 = conta_codons("genes_yeast.ffn");
my %codons = %{$ref1};

my $ref2 = table_aa(\%codons);
my %usage = %{$ref2};

my $last="a";

foreach my $codon (sort {$usage{$a}{name} cmp $usage{$b}{name}} keys %usage) {
if ($last eq $usage{$codon}{name}){ print "$codon\t$usage{$codon}{name}\t$usage{$codon}{contagem}\n";}
else { print "\n$codon\t$usage{$codon}{name}\t$usage{$codon}{contagem}\n"; }
$last = $usage{$codon}{name};
}

exit;

sub conta_codons {

my $file_name = shift;

        my $file_obj = Bio::SeqIO -> new ( -file => $file_name,
                                           -format => 'fasta'   );

        #gera hash com a quantidade de vezes que cada codon aparece.
        my %codons;
        while (my $inseq = $file_obj->next_seq) {
                        # grava cada seq na variavel $sequence
                my $sequence = $inseq->seq();
                #anda de 3 em 3 (tem q ver se da certo)
                for(my $i=0; $i < (length($sequence) - 2) ; $i += 3){
                my $codon = substr($sequence,$i,3);
                #se o codon for novo na tabela, ele recebe o valor 1
                        if (!defined $codons{$codon}) { $codons{$codon} = 1 }
                        # se ele for recorrente, apenas soma 1.
                        else { $codons{$codon}++; }
                }
        }
return \%codons;
}


sub table_aa {
     
my $ref = shift;
my %codons = %{$ref};

my %usage;
foreach my $codon (keys %codons) {

        if ( $codon =~ /GC./i)        { $usage{$codon}{name}= "ala"; $usage{$codon}{contagem}= $codons{$codon}; }    # Alanine
     elsif ( $codon =~ /TG[TC]/i)     { $usage{$codon}{name}= "cys"; $usage{$codon}{contagem}= $codons{$codon}; }    # Cysteine
     elsif ( $codon =~ /GA[TC]/i)     { $usage{$codon}{name}= "aca"; $usage{$codon}{contagem}= $codons{$codon}; }    # Aspartic Acid
     elsif ( $codon =~ /GA[AG]/i)     { $usage{$codon}{name}= "glu"; $usage{$codon}{contagem}= $codons{$codon}; }    # Glutamic Acid
     elsif ( $codon =~ /TT[TC]/i)     { $usage{$codon}{name}= "phe"; $usage{$codon}{contagem}= $codons{$codon}; }    # Phenylalanine
     elsif ( $codon =~ /GG./i)        { $usage{$codon}{name}= "gly"; $usage{$codon}{contagem}= $codons{$codon}; }    # Glycine
     elsif ( $codon =~ /CA[TC]/i)     { $usage{$codon}{name}= "his"; $usage{$codon}{contagem}= $codons{$codon}; }    # Histidine
     elsif ( $codon =~ /AT[TCA]/i)    { $usage{$codon}{name}= "iso"; $usage{$codon}{contagem}= $codons{$codon}; }    # Isoleucine
     elsif ( $codon =~ /AA[AG]/i)     { $usage{$codon}{name}= "lys"; $usage{$codon}{contagem}= $codons{$codon}; }    # Lysine
     elsif ( $codon =~ /TT[AG]|CT./i) { $usage{$codon}{name}= "leu"; $usage{$codon}{contagem}= $codons{$codon}; }    # Leucine
     elsif ( $codon =~ /ATG/i)        { $usage{$codon}{name}= "met"; $usage{$codon}{contagem}= $codons{$codon}; }    # Methionine
     elsif ( $codon =~ /AA[TC]/i)     { $usage{$codon}{name}= "asp"; $usage{$codon}{contagem}= $codons{$codon}; }    # Asparagine
     elsif ( $codon =~ /CC./i)        { $usage{$codon}{name}= "pro"; $usage{$codon}{contagem}= $codons{$codon}; }    # Proline
     elsif ( $codon =~ /CA[AG]/i)     { $usage{$codon}{name}= "glu"; $usage{$codon}{contagem}= $codons{$codon}; }    # Glutamine
     elsif ( $codon =~ /CG.|AG[AG]/i) { $usage{$codon}{name}= "arg"; $usage{$codon}{contagem}= $codons{$codon}; }    # Arginine
     elsif ( $codon =~ /TC.|AG[TC]/i) { $usage{$codon}{name}= "ser"; $usage{$codon}{contagem}= $codons{$codon}; }    # Serine
     elsif ( $codon =~ /AC./i)        { $usage{$codon}{name}= "thr"; $usage{$codon}{contagem}= $codons{$codon}; }    # Threonine
     elsif ( $codon =~ /GT./i)        { $usage{$codon}{name}= "val"; $usage{$codon}{contagem}= $codons{$codon}; }    # Valine
     elsif ( $codon =~ /TGG/i)        { $usage{$codon}{name}= "try"; $usage{$codon}{contagem}= $codons{$codon}; }    # Tryptophan
     elsif ( $codon =~ /TA[TC]/i)     { $usage{$codon}{name}= "tyr"; $usage{$codon}{contagem}= $codons{$codon}; }    # Tyrosine
     elsif ( $codon =~ /TA[AG]|TGA/i) { $usage{$codon}{name}= "stp"; $usage{$codon}{contagem}= $codons{$codon}; }    # Stop
     else { print STDERR "Bad codon \"$codon\"!!\n" }
     }

     return \%usage;
 }