Bioinformática

Boas estou com grandes dificuldades…

Alguém me pode ajudar? preciso de fazer um programa que faça isto :

i) ler uma lista de sequências de ficheiro em formato Fasta que constituirão a base de dados local a usar

ii) dada uma sequência query, identificar uma lista de sequências similares ordenando–‐as pelo respectivo score

iii) escrever o resultado num ficheiro de texto num formato perceptível para o utilizador

alguém sabe de links com informação para me ajudar ou até algoritmos?

Obrigado

Carinha, isso está me cheirando a utilização de Regex.

Nota: Isso é um forum Java, tive que buscar no google que c. é esse formato FASTA…

Veja a classe java.util.regex.Pattern http://docs.oracle.com/javase/1.5.0/docs/api/java/util/regex/Pattern.html

Se você quiser fazer um negócio mais sofisticado, tem a possibilidade de você usar uma engine de buscas tipo o Lucene. http://lucene.apache.org/java/docs/index.html

Para ler e gravar arquivos-texto, o que você precisa é das classes java.io.Writer, em especial a FileWriter.

Para ordenar a lista de sequencias, você pode usar o java.util.TreeSet, especificando um Comparator que ordene pela pontuação.

Cara, esse título não está nada claro.
Você usou algum tradutor automático? Se esse for o caso poste a forma original, melhor do que usar essa bagaça.

Anyway, poste dúvidas mais pontuais, o que você fez foi postar o enunciado e perguntar por algorítimos, nisso ninguém poderá te ajudar a menos que façam seu trabalho todo (o que não vai ser o caso). Comece a implementar ou faça perguntas mais específicas, pontuais, tenha foco.

Carinha, outra coisa, se esse banco de sequências é muito grande, talvez seja mais interessante que ele fosse armazenado em um banco de dados relacional, como o MySQL. Daí é possível fazer buscas de texto nessa base.

Em que linguagem vc esta fazendo isso??

Quando eu trabalhava com bioinformatica eu usava bastante Perl.

Primeiro, varios aquivos de sequencias no formato FASTA no seu diretorio, vc vai ter pegar uma lista dos arquivos, com Perl vc pode fazer algo do tipo:

@list_of_files = `ls`;

Como o FASTA, vai ser algo do tipo:

>Sequence_Name
ATGCTGACCCCATGCTGACCCCATGCTGACCCC
ATGCTGACCCCATGCTGACCCCATGCTGACCCC
ATGCTGACCCCATGCTGACCCCATGCTGACCCC
TTTAAAACCCTCTGT

Voce tera que ignorar a primeira linha do arquivo, ai eh soh fazer uma regular expression para pegar o valor que vc quiser, vc tem que verificar quantos aminoacidos em sequencia vc vai considerar um match.

Mais ou menos assim:

#!/usr/bin/perl

@list_of_files = `ls *.fasta`;

foreach $file (@list_of_files)
{
      open(INPUT, "<", $filename) || die "Can't open file!! buhhhhh!!!! "
      @file_content = <INPUT>;

      for($i = 1; $i < $#file_content; $i++) {
           $line = $file_content[i];
           // faz regular expression, se achar, pega o resultado escreve para um arquivo.
      }

      close(INPUT);
}

PS: Perdoe se estiver alguma coisa errada, faz anos que eu nao programo em Perl e eu nao testei o codigo! :wink:

//Daniel

Boas

Pretende-se usar linguagem Java para fazer o programa. O FASTA é um tipo de formato usado em bioinformática, mas não passa de um ficheiro txt normal.

A minha dúvida é como se implementa um método que leia um ficheiro de texto e que e que depois de correr o programa guarde o resultado num outro ficheiro txt.

[quote=Rkardo58]Boas

Pretende-se usar linguagem Java para fazer o programa. O FASTA é um tipo de formato usado em bioinformática, mas não passa de um ficheiro txt normal.

A minha dúvida é como se implementa um método que leia um ficheiro de texto e que e que depois de correr o programa guarde o resultado num outro ficheiro txt.[/quote]

Se vc vai usar Java, aqui tem alguns exemplos:

http://www.javapractices.com/topic/TopicAction.do?Id=42

//Daniel

Dá uma olhada no Biojava: http://biojava.org/wiki/Main_Page, com ele é fácil ler e escrever arquivos FASTA, ele também faz operações de alinhamento.

Porém, acredito que a busca que você quer é realizada por um programa chamado BLAST (http://www.ebi.ac.uk/Tools/sss/ncbiblast/nucleotide.html ou http://blast.ncbi.nlm.nih.gov/Blast.cgi). Se você quiser fazer essa busca em um dos bancos de dados do consórcio INSDC (NCBI, EMBL e DDBJ) você possui Webservices (veja nos sites deles, um dos mais fáceis de usar é a URLAPI do NCBI, ou QBLAST como também é chamado), mas se você quer fazer a busca na sua base eu acho uma boa alternativa você usar o programa BLAST em linha de comando (http://blast.ncbi.nlm.nih.gov/Blast.cgi?CMD=Web&PAGE_TYPE=BlastDocs&DOC_TYPE=Download), pois é necessário preparar a sua base (que será um arquivo FASTA com todas as sequências dessa base), então você pode chamar o BLAST a partir do Java e fazer o parse dos resultados com Biojava por exemplo, e pode acreditar o BLAST é muito rápido - mesmo em bases grandes.

Com relação a como você quer exibir para o usuário o resultado das consultas, eu acho que você deveria se inspirar nos próprios programas que já existem (o BLAST do NCBI é muito bom), pois seu usuário provavelmente já está habituado com o padrão de exibição deles.

Espero ter ajudado. Boa sorte!

Tbm estou quero algo semelhante. Vc conseguiu desenvolver o script?