<small>This manual corresponds to version 5.15</small>
<small>This manual corresponds to version 5.16</small>
<h2>Introduction</h2>
Proteinortho is a tool to detect orthologous genes within different species.
For doing so, it compares similarities of given gene sequences and clusters them to find significant groups.
@@ -154,17 +154,27 @@ They are:
<h2>Hints</h2>
<ul>
<li>Using <i>.faa</i> to indicate that your file contains amino acids and <i>.fna</i> to show it contains nucleotides makes life much easier.
<li>Each sequence ID in your FASTA files must be unique. Consider renaming the otherwise.
<li>Sequence IDs must be unique within a single FASTA file. Consider renaming otherwise. <br>Note: Till version 5.15 sequences IDs had to be unique among the whole dataset. Proteinortho now keeps track of name and species to avoid the necessissity of renaming.
<li>You need write permissions in the directory of your FASTA files as Proteinortho will create blast databases. If this is not the case, consider using symbolic links to the FASTA files.
<li>The directory <i>tools</i> cotains useful tools, e.g. <code>grab_proteins.pl</code> which fetches protein sequences of orthologous groups from Proteinortho output table
<li>The directory <i>tools</i> contains useful tools, e.g. <code>grab_proteins.pl</code> which fetches protein sequences of orthologous groups from Proteinortho output table
<tr><td>-e=</td><td>1e-05</td><td>E-value for blast</td></tr>
<tr><td>-p=</td><td>blastp+</td><td>blast program to use:
<ul>
@@ -179,29 +189,34 @@ in case you only have access to blast legacy:
<li>blastp → sequences are given as amino acids
<li>tblastx → sequences are given as nucleotides and will be interpreted as (translated) amino acids in all three reading frames
</ul>
</td></tr>
<tr><td>-project=</td><td>myproject</td><td> prefix for all result file names</td></tr>
<tr><td>-temp=</td><td>working directory</td><td> path for temporary files</td></tr>
<tr><td>-synteny</td><td>-</td><td>activate PoFF extension to separate similar sequences using synteny (requires a GFF file for each FASTA file)</td></tr>
<tr><td>-nograph</td><td>-</td><td>do not generate .graph files with pairwise orthology data<br>saves some time</td></tr>
<tr><td>-keep</td><td>-</td><td>store temporary blast results for reuse</td></tr>
<tr><td>-clean</td><td>-</td><td>remove all unnecessary files after processing</td></tr>
<tr><td>-desc</td><td>-</td><td>write gene description file (XXX.descriptions); works only with NCBI-formated FASTA entries currently</td></tr>
<tr><td>-force</td><td>-</td><td>force recalculation of blast results in any case</td></tr>
<tr><td>-cpus=</td><td>auto</td><td>use the given number of threads</td></tr>
<tr><td>-selfblast</td><td>-</td><td>apply selfblast to directly paralogs; normally these are inferred indirectly from orthology data to other species (experimental!)</td></tr>
<tr><td>-singles</td><td>-</td><td>Also report genes without orthologs in table output</td></tr>
<tr><td>-selfblast</td><td></td><td>apply selfblast to directly paralogs; normally these are inferred indirectly from orthology data to other species (experimental!)</td></tr>
<tr><td>-sim=</td><td>0.95</td><td>min. similarity for additional hits</td></tr>
<tr><td>-identity=</td><td>25</td><td>min. percent identity of best blast alignments</td></tr>
<tr><td>-cov=</td><td>50</td><td>min. coverage of best blast alignments in percent</td></tr>
<tr><td>-subpara=</td><td></td><td>additional parameters for blast; set these in quotes (e.g. -subpara='-seg no') <br>This parameter was named -blastParameters in earlier versions</td></tr>
<tr><td>-synteny</td><td>-</td><td>activate PoFF extension to separate similar sequences using synteny (requires a GFF file for each FASTA file)</td></tr>
<tr><td>-dups=</td><td>0</td><td> applied in combination with -synteny; number of reiterations for adjacencies heuristic to determine duplicated regions; <br>
if set to a higher number, co-orthologs will tend to get clustered together rather than getting separated
</td></tr>
<tr><td>-cs=</td><td>3</td><td> applied in combination with -synteny; size of a maximum common substring (MCS) for adjacency matches; <br> the longer this value becomes the longer syntenic regions need to be in order to be detected </td></tr>
<tr><td>alpha=</td><td>0.5</td><td>weight of adjacencies vs. sequence similarity</td></tr>
<tr><tdcolspan=3><b>Parameters needed to distribute the runs over several machines</b></td></tr>
<tr><td>-step=</td><td>0</td><td>
perform only specific steps of the analysis
@@ -211,31 +226,32 @@ perform only specific steps of the analysis
<li>3 → perform clustering
<li>0 → perform all steps
</ul></td></tr>
<tr><td>startat=</td><td>0</td><td>file number to start with</td></tr>
<tr><td>stopat=</td><td>-1</td><td>file number to end with (very last one = -1)</td></tr>
<tr><tdcolspan=3><b>Parameters applied in combination with -synteny<b></td></tr>
<tr><td>-dups=</td><td>0</td><td> applied in combination with -synteny; number of reiterations for adjacencies heuristic to determine duplicated regions; <br>
if set to a higher number, co-orthologs will tend to get clustered together rather than getting separated
</td></tr>
<tr><td>-cs=</td><td>3</td><td> applied in combination with -synteny; size of a maximum common substring (MCS) for adjacency matches; <br> the longer this value becomes the longer syntenic regions need to be in order to be detected </td></tr>
<tr><td>alpha=</td><td>0.5</td><td>weight of adjacencies vs. sequence similarity</td></tr>
<tr><td>jobs=N/M</td><td></td><td>distribute blast step into M subsets and run job number N out of M in this very process, only works in combination with -step=2</td></tr>
</table>
<h3>Using several machines</h3>
If you want to involve multiple machines or separate a Proteinortho run into smaller chunks, use the <i>-steps=</i> option.
If you want to involve multiple machines or separate a Proteinortho run into smaller chunks, use the <i>-jobs=M/N</i> option.
First, run <code>proteinortho5.pl -steps=1 ...</code> to generate the indices.
Then you can run <code>proteinortho5.pl -steps=2 -startat=X -stopat=Y ...</code> to run small chunks separately.
Instead of X and Y numbers must be set representing the file number to be calculated. X and Y can be equal.
E.g. you have four fasta files, the you can to run <br>
Then you can run <code>proteinortho5.pl -steps=2 -jobs=M/N ...</code> to run small chunks separately.
Instead of M and N numbers must be set representing the number of jobs you want to divide the run into (M) and the job division to be performed by the process.
E.g. to divide a Proteinortho run into 4 jobs to run on several machines, use <br>
if(debug_level>1)cerr<<"[DEBUG] Single gene skipped"<<endl;
protein_id++;
continue;
}
// Connectivity analysis
if(debug_level>0)cerr<<"[DEBUG] Calculating connectivity of a group. "<<current_group.size()<<" proteins (ID: "<<protein_id<<")"<<endl;
if(current_group.size()>16000)cerr<<"[WARN] Current connected component conatins "<<current_group.size()<<" proteins. That might be way to much for me. Try raising the e-value!"<<endl;
@@ -512,22 +539,18 @@ void splitGroups(vector<double>& y, vector<unsigned int>& nodes){
throw"Failed to partition subgraph! This might lead to an infinit loop. Please submit the .blastgraph file to lechner@staff.uni-marburg.de to help fixing this issue.";
}
removeExternalEdges(groupZero);
removeExternalEdges(groupA);
removeExternalEdges(groupB);
}
doublegetConnectivity(vector<unsignedint>&nodes){
// Special cases hotfix
if(nodes.size()==2){return1;}
if(nodes.size()==3){
vector<unsignedint>min=get_deg_one(nodes);
// fully connected
if(min.size()==0){return1;}
// not
else{return1/3;}
// Special case quicky
if(nodes.size()==2){
if(debug_level>1)cerr<<"[DEBUG L2] Shortcut for two-piece component -> conn = 1"<<endl;