Original Article: JAligner
Author: jaligner.sourceforge.net

JAligner

Uma implementação em Java de código aberto do algoritmo Smith-Waterman com a melhoria de Gotoh para o alinhamento biológico de sequências parciais locais usando o modelo de penalidade de lacuna afim.

Características

  • A complexidade do espaço para realizar a programação dinâmica com a matriz de pontos de similaridade principal e as 2 matrizes de intervalos auxiliares é reduzida de O (m × n) para O (n), onde m e n são os tamanhos da seqüência vertical e da seqüência horizontal respectivamente , usando arrays monodimensionais suficientes de tamanho n em vez dos arrays bidimensionais originais de tamanho m × n.
  • A matriz bidimensional de tamanho m × n, para manter as direções de retorno (diagonal, esquerda, cima e parada), é mapeada em uma matriz unidimensional de tamanho m × n. Essa abordagem acelera o processo de alocação de memória porque a Máquina Virtual Java (JVM) tenta alocar uma matriz de uma única dimensão de m × n "bytes" (tipo de dados primitivo), ao invés de tentar alocar uma matriz de "objetos" , cada um dos quais é uma "matriz" de n bytes.
  • Em adição ao 70 já incluíram matrizes de pontuação, que foram retirados do NCBI site, JAligner trabalha com usuário definido matrizes de pontuação.
  • É fácil usar o JAligner através de uma interface de usuário gráfica amigável (GUI), sintaxe de linha de comando simples ou interface de aplicativo de programação reutilizável (API).

Uso

Existem várias maneiras de alinhar um par de seqüências usando o JAligner:

Command line

java -jar jaligner.jar <s1> <s2> <matrix> <open> <extend>

Onde:

  • s1: caminho para um arquivo contendo uma seqüência de entrada #1.
  • s2: caminho para um arquivo contendo uma seqüência de entrada #2.
  • matrix: nome de uma matriz de pontuação ou caminho para um arquivo contendo um usuário definido matriz de pontuação.
  • open: penalidade aberta.
  • extend: estender a penalidade.

Exemplo:

java -jar jaligner.jar s1.fa s2.fa BLOSUM62 10.0 0.5

Para carregar uma matriz de pontuação definida pelo usuário a partir do sistema de arquivos, o caminho para o arquivo da matriz deve incluir pelo menos um separador de arquivos (um separador de arquivos marca o JAligner para carregar a matriz de pontuação do sistema de arquivos em vez de procurá-lo em jaligner.jar).

Exemplo:

java -jar jaligner.jar s1.fa s2.fa ./matrix.txt 10.0 0.5

O layout de um arquivo de matriz de pontuação definido pelo usuário deverá ser o mesmo que o layout do matrizes de pontuação padrão:

  • linhas de comentários opcionais (uma linha de comentários começa com um sinal de número "#"),
  • linha de cabeçalho com as letras no alfabeto das duas seqüências, e
  • uma linha para cada letra no alfabeto onde cada linha começa com essa letra seguida das pontuações de substituição para as letras correspondentes na linha de cabeçalho.

Java Network Launch Protocol (JNLP)

Em geral, as aplicações baseadas em JNLP exigem Java Web Start (JWS) para ser instalado na máquina do cliente, felizmente, a JWS foi empacotada dentro do núcleo Standard Java Edition (J2SE) desde J2SE 1.4.

Portanto, supondo que o JWS já esteja instalado, o JAligner pode ser iniciado visitando o descritor de implantação XML jaligner.jnlp em (http://jaligner.sourceforge.net/jaligner.jnlp) através do navegador da Web ou linha de comando com o executável javaws, que existe sob o javaws no diretório de instalação (raiz) do Java Runtime Environment (JRE).

Exemplo:

javaws http://jaligner.sourceforge.net/jaligner.jnlp

No jaligner.jnlp, é solicitada uma permissão completa porque o aplicativo precisa acessar:

  • a prancheta do sistema para edição (cortar e colar) as seqüências de entrada,
  • o sistema de arquivos para carregar e armazenar as seqüências de entrada e alinhamentos de saída, e
  • as propriedades JVM: user.home, file.separator e line.separator.

Mas desde jaligner.jar é assinado pelo auto-assinado certificado, uma vez que o download do arquivo JAR está completo, o JWS exibe uma mensagem avisando que o aplicativo está solicitando uma permissão total e o certificado de assinatura não pôde ser verificado, de modo a ignorar essa mensagem de aviso e iniciar o aplicativo, é necessário para Clique no botão "Iniciar" na janela da mensagem de aviso.

Desktop

A linha de comando para iniciar o JAligner como uma aplicação GUI da área de trabalho é

java -jar jaligner.jar

Além disso, existem instaladores para download (criados usando ej-technologies's install4j) para os seguintes sistemas operacionais (Linux, UNIX, Mac OS X e Windows).

Interface de aplicação de programação (API)

Classe SmithWatermanGotoh tem o método estático público align, que pode ser chamado programaticamente para alinhar duas seqüências.

Notas

  • O JVM usa, por padrão, um pool de alocação de memória de um tamanho inicial de 2MB e um tamanho máximo de 64MB. Seqüências grandes elevarão o erro de falta de memória, quando o requisito de memória exceder o espaço disponível, então, para esses casos, será necessário inicializar o JVM com o tamanho adequado do heap usando o -Xms (o tamanho inicial) e -Xmx (o tamanho máximo) opções.

    Example:

    java -Xms128m -Xmx512m -jar jaligner.jar
  • Compilar o código-fonte precisa de uma implementação das especificações do Java Network Launch Protocol (JNLP) para estar na compilação classpath e incluindo Java Web Start javaws.jar fornece a implementação necessária.

Licenças

Se você estiver usando JAligner em um trabalho ou produto publicado, cite:

Ahmed Moustafa, JAligner: Implementação Java de fonte aberta de Smith-Waterman, (http://jaligner.sourceforge.net) (a data acessada).

Referências

Reconhecimentos

Agradeço profundamente a todas as pessoas que contribuíram com perguntas, comentários ou sugestões sobre o JAligner, todos os comentários foram úteis e aprendi com isso. Gostaria de expressar meus agradecimentos especiais a:

  • ej-technologies: fornecendo licença gratuita para install4j (Maio de 2005).
  • Bram Minnaert: detectando um erro na inicialização das matrizes auxiliares (Outubro de 2004), e para corrigir a lógica de rastreamento e fornecer módulos de teste para testar os alinhamentos produzidos contra os escores de alinhamento (Março de 2005)
  • Hector Gonzalez: detectando um erro na inicialização da matriz de rastreamento (Março de 2004),
  • Andreas Doms: detectando um erro na condição de parada de retorno e sugerindo uma correção que melhorou o desempenho também (Fevereiro de 2004),
  • Ryan Golhar: recomendando mudar o rastreamento da recursão para a iteração para evitar um problema de transbordamento de pilha (Agosto de 2003), e
  • Tim Carver: Comentários sobre o layout GUI e o formato de alinhamento (Julho de 2003).