Family Alignment Documentation
This Phyloinformatic Hackathon page describes use cases concerning the characterization of sequence families in a set of related organisms. There are many ways to do this so our examples, though robust and proven by practice, are selected from a multitude of possible examples. The focus is on approaches that use a Bio* toolkit ([BioJava, BioPerl, BioPython, BioRuby) since these packages offer the user different workflow possibilities and practical, re-useable code but home-grown solutions are also discussed.
All of our examples are descriptions of bioinformatic workflows or pipelines. A workflow is comprised of a set of analytical applications, performing the analyses themselves, and some set of scripts that hand data to applications and take results from these same applications. One will also frequently encounter some set of critical filters (e.g. in English, "only write those sequences to a file that match the query sequence with a p < .0001" or "get all nucleotide sequences > 250 bp in length from the input file"), and these filtering steps may be performed by an application or by a script.
The characterized gene family, either as protein or nucleotide, is not necessarily an endpoint but is frequently the starting point for detailed phylogenetic analyses. For example one use case describes the analysis of the rate of silent substitutions within and between families. Another use case describes the task of comparing a species tree to gene family trees from those same species, and how one might resolve discrepancies between those structures (Reconcile Trees Documentation).
We also describe a set of BioPerl scripts created during the Hackathon that can be used for sequence family creation and alignment.
Analysis of Gene & Protein Families from Fungal Genomes
Based on the work of Jason Stajich (see http://fungal.genome.duke.edu/ and A Fungal Phylogeny based on 42 Genomes). This user story starts with a large number of genomes as nucleotide sequence, and the aim is to identify orthologous protein sequences in those genomes and cluster them into protein families. The general problem and a solution is described in this presentation.
Genome annotation Applications
- Similarity and Alignment tools
Jason Stajich performed the following general steps:
- Generate probable protein sequence matches to the genomes
- By running gene prediction software (SNAP, AUGUSTUS, Glimmer, Genscan) on genomic sequence.
- By aligning protein sequence to genomic sequence using exonerate (protein2genome).
- By aligning EST sequence to genomic sequence using exonerate (est2genome).
- By using BLASTN or BLASTZ with appropriate query sequences (e.g. cDNA nucleotide sequences).
- Collect all coordinates of all possible protein-to-genome matches.
- Use GLEAN as combiner to unify predictions and create a set of predicted proteins.
- Use both known and predicted proteins in a FASTA all vs. all comparison to find predicted orthologs.
- Use both known and predicted proteins with TribeMCL to create protein families.
Analysis of Silent Substitutions Within a Genome or Across Genomes
Based on the work of Amy Bouck (http://visionlab.bio.unc.edu/).
Jason Stajich has worked on use case 3.1, sequence family alignment, and has written a set of BioPerl scripts that can be used for this purpose. Note that these scripts collect and cluster sequences but do not annotate them. There are a number of design decisions, unspecified within the use case, which Jason has addressed in the course of coding:
- The user might be interested in characterizing all possible families in the input sequences or only one given family, exemplified by some single sequence.
- The workflow could be enacted by one script, or one or more scripts in a workflow. In the case of multiple scripts one needs define inputs and outputs carefully such that the scripts could be chained together.
- Any given step, such as aligning at a given point, could be executed by one of a number of different programs (e.g. clustalw or T_Coffee). It would not be easy to allow the user to choose any executable for a given step so some reasonable decisions have been made.
- Example: Tribe will be selected as the application that will be used to cluster sequences into families.
- There are open questions around speed and sensitivity that can't be resolved during the Hackathon. It is not clear that the choice of applications is optimal for a given user's preferences.
These scripts will be placed in a dedicated directory in the BioPerl distribution.