Spaces:
No application file
No application file
# Copyright 2009 by Cymon J. Cox. All rights reserved. | |
# | |
# This file is part of the Biopython distribution and governed by your | |
# choice of the "Biopython License Agreement" or the "BSD 3-Clause License". | |
# Please see the LICENSE file that should have been included as part of this | |
# package. | |
"""Command line wrapper for the multiple alignment program PROBCONS.""" | |
from Bio.Application import _Option, _Switch, _Argument, AbstractCommandline | |
class ProbconsCommandline(AbstractCommandline): | |
"""Command line wrapper for the multiple alignment program PROBCONS. | |
http://probcons.stanford.edu/ | |
Notes | |
----- | |
Last checked against version: 1.12 | |
References | |
---------- | |
Do, C.B., Mahabhashyam, M.S.P., Brudno, M., and Batzoglou, S. 2005. | |
PROBCONS: Probabilistic Consistency-based Multiple Sequence Alignment. | |
Genome Research 15: 330-340. | |
Examples | |
-------- | |
To align a FASTA file (unaligned.fasta) with the output in ClustalW | |
format, and otherwise default settings, use: | |
>>> from Bio.Align.Applications import ProbconsCommandline | |
>>> probcons_cline = ProbconsCommandline(input="unaligned.fasta", | |
... clustalw=True) | |
>>> print(probcons_cline) | |
probcons -clustalw unaligned.fasta | |
You would typically run the command line with probcons_cline() or via | |
the Python subprocess module, as described in the Biopython tutorial. | |
Note that PROBCONS will write the alignment to stdout, which you may | |
want to save to a file and then parse, e.g.:: | |
stdout, stderr = probcons_cline() | |
with open("aligned.aln", "w") as handle: | |
handle.write(stdout) | |
from Bio import AlignIO | |
align = AlignIO.read("aligned.fasta", "clustalw") | |
Alternatively, to parse the output with AlignIO directly you can | |
use StringIO to turn the string into a handle:: | |
stdout, stderr = probcons_cline() | |
from io import StringIO | |
from Bio import AlignIO | |
align = AlignIO.read(StringIO(stdout), "clustalw") | |
""" | |
def __init__(self, cmd="probcons", **kwargs): | |
"""Initialize the class.""" | |
self.parameters = [ | |
# Note that some options cannot be assigned via properties using the | |
# original documented option (because hyphens are not valid for names in | |
# python), e.g cmdline.pre-training = 3 will not work | |
# In these cases the shortened option name should be used | |
# cmdline.pre = 3 | |
_Switch( | |
["-clustalw", "clustalw"], "Use CLUSTALW output format instead of MFA" | |
), | |
_Option( | |
["-c", "c", "--consistency", "consistency"], | |
"Use 0 <= REPS <= 5 (default: 2) passes of consistency transformation", | |
checker_function=lambda x: x in range(0, 6), | |
equate=False, | |
), | |
_Option( | |
["-ir", "--iterative-refinement", "iterative-refinement", "ir"], | |
"Use 0 <= REPS <= 1000 (default: 100) passes of iterative-refinement", | |
checker_function=lambda x: x in range(0, 1001), | |
equate=False, | |
), | |
_Option( | |
["-pre", "--pre-training", "pre-training", "pre"], | |
"Use 0 <= REPS <= 20 (default: 0) rounds of pretraining", | |
checker_function=lambda x: x in range(0, 21), | |
equate=False, | |
), | |
_Switch(["-pairs", "pairs"], "Generate all-pairs pairwise alignments"), | |
_Switch( | |
["-viterbi", "viterbi"], | |
"Use Viterbi algorithm to generate all pairs " | |
"(automatically enables -pairs)", | |
), | |
_Switch( | |
["-verbose", "verbose"], "Report progress while aligning (default: off)" | |
), | |
_Option( | |
["-annot", "annot"], | |
"Write annotation for multiple alignment to FILENAME", | |
equate=False, | |
), | |
_Option( | |
["-t", "t", "--train", "train"], | |
"Compute EM transition probabilities, store in FILENAME " | |
"(default: no training)", | |
equate=False, | |
), | |
_Switch( | |
["-e", "e", "--emissions", "emissions"], | |
"Also reestimate emission probabilities (default: off)", | |
), | |
_Option( | |
["-p", "p", "--paramfile", "paramfile"], | |
"Read parameters from FILENAME", | |
equate=False, | |
), | |
_Switch( | |
["-a", "--alignment-order", "alignment-order", "a"], | |
"Print sequences in alignment order rather than input " | |
"order (default: off)", | |
), | |
# Input file name | |
_Argument( | |
["input"], | |
"Input file name. Must be multiple FASTA alignment (MFA) format", | |
filename=True, | |
is_required=True, | |
), | |
] | |
AbstractCommandline.__init__(self, cmd, **kwargs) | |
if __name__ == "__main__": | |
from Bio._utils import run_doctest | |
run_doctest() | |