Criação e exploração rápida de pangenoma sem alinhamento
Lançamento: Desenvolvedor: @master:
FindMyFriends é um pacote R para fazer análises pangenômicas em genomas microbianos. Ele é lançado como parte do projeto Bioconductor e pode ser instalado com a função BiocManager::install()
:
if ( ! requireNamespace( " BiocManager " , quietly = TRUE ))
install.packages( " BiocManager " )
BiocManager :: install( " FindMyFriends " )
Para obter a versão mais recente, instale diretamente do GitHub:
if ( ! require( devtools )) {
install.packages( ' devtools ' )
library( devtools )
}
install_github( ' thomasp85/FindMyFriends ' )
Na genômica microbiana comparativa, um pangenoma é definido como um agrupamento de genes entre genomas com base em algum tipo de semelhança. Essa medida de similaridade não é imutável, mas muitas vezes é derivada da explosão de cada par de genes um contra o outro. Esta é uma má ideia por vários motivos: comparar tudo contra todos leva a uma escala horrível do tempo computacional à medida que o número de genes aumenta, o BLAST é em geral muito lento e a similaridade de sequência por si só não consegue distinguir genes ortólogos de parálogos. O último ponto foi abordado por ferramentas recentes como PanOCT e Roary, mas os dois primeiros ainda permanecem (embora Roary faça algo inteligente para torná-lo menos problemático).
Entre no FindMyFriends...
É também outro algoritmo. Mas o mais importante é que é uma estrutura para conduzir a análise do pangenoma que é completamente independente de como você derivou seu pangenoma em primeiro lugar. FindMyFriends define uma lista extensível de classes para lidar com dados do pangenoma de maneira transparente e se conecta diretamente à vasta gama de ferramentas genômicas oferecidas pelo Bioconductor.
Ok, de volta aos algoritmos. FindMyFriends funciona usando CD-Hit para criar um agrupamento muito grosseiro dos genes em seu conjunto de dados e, em seguida, refinar esse agrupamento em uma segunda passagem usando medidas de similaridade adicionais. Isso contrasta com Roary que usa CD-Hit, mas apenas para agrupar os genes mais semelhantes antes de executar o BLAST. A segunda passagem no FindMyFriends é onde toda a mágica acontece. Os genes em cada grande grupo são comparados por similaridade de sequência (usando similaridade de cosseno kmer), comprimento de sequência, associação ao genoma e similaridade de vizinhança. Com base nessas comparações é criado um gráfico para cada grupo, com arestas definindo similaridade acima de um determinado limite entre genes. A partir deste gráfico, os cliques são extraídos gradualmente de uma forma que garante que os cliques da mais alta qualidade sejam extraídos primeiro. Essas cliques definem o agrupamento final de genes. Por serem cliques, o usuário pode ter certeza de que todos os membros dos grupos de genes resultantes compartilham uma semelhança definida entre si e que nenhum gene pode ser agrupado com outros solenemente com base em uma alta semelhança com um membro.
Bem, resultados de alta qualidade são mais importantes que velocidade! Mas este é um dos raros casos em que você pode pegar seu bolo e comê-lo também. FindMyFriends é, por uma grande margem, o algoritmo mais rápido que existe:
FindMyFriends abrange milhares de genomas e pode lidar com grande diversidade (ou seja, não restrito ao nível de espécie). Como exemplo, um pangenoma baseado em aproximadamente 1.200 cepas da ordem Lactobacillales (bactérias do ácido láctico) foi criado em cerca de 8 horas em uma instância c3x8.large da AWS usando um único núcleo.
Sendo uma estrutura, há muitas coisas que você pode fazer e muitas maneiras diferentes de fazê-lo. A seguir está a abordagem recomendada para calcular um pangenoma:
library( FindMyFriends )
# We expect here that your genomes are stored in amino acid fasta files in the
# working directory.
genomes <- list.files( pattern = ' .fasta ' )
# First we create our pangenome object
pg <- pangenome( genomes , translated = TRUE , geneLocation = ' prodigal ' )
# Then we make the initial grouping
pg <- cdhitGrouping( pg )
# And lastly we refine the groups
pg <- neighborhoodSplit( pg )
consulte a vinheta para obter mais informações sobre as diferentes etapas, bem como exemplos sobre o que você pode fazer com seus dados depois de agrupar seus genes.
A seguir estão alguns dos recursos que estão sendo trabalhados/considerados: