Spaces:
No application file
No application file
| # Copyright 2003 by Bartek Wilczynski. 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. | |
| """Parsing AlignACE output files.""" | |
| from Bio.motifs import Motif, Instances | |
| from Bio.Seq import Seq | |
| class Record(list): | |
| """AlignACE record (subclass of Python list).""" | |
| def __init__(self): | |
| """Initialize the class.""" | |
| self.parameters = None | |
| def read(handle): | |
| """Parse an AlignACE format handle as a Record object.""" | |
| record = Record() | |
| line = next(handle) | |
| record.version = line.strip() | |
| line = next(handle) | |
| record.command = line.strip() | |
| mask = None | |
| number = None | |
| for line in handle: | |
| line = line.strip() | |
| if line == "": | |
| pass | |
| elif line[:4] == "Para": | |
| record.parameters = {} | |
| elif line[0] == "#": | |
| seq_name = line.split("\t")[1] | |
| record.sequences.append(seq_name) | |
| elif "=" in line: | |
| par_name, par_value = line.split("=") | |
| par_name = par_name.strip() | |
| par_value = par_value.strip() | |
| record.parameters[par_name] = par_value | |
| elif line[:5] == "Input": | |
| record.sequences = [] | |
| elif line[:5] == "Motif": | |
| words = line.split() | |
| assert words[0] == "Motif" | |
| number = int(words[1]) | |
| instances = [] | |
| elif line[:3] == "MAP": | |
| alphabet = "ACGT" | |
| instances = Instances(instances, alphabet) | |
| motif = Motif(alphabet, instances) | |
| motif.score = float(line.split()[-1]) | |
| motif.number = number | |
| motif.mask = mask | |
| record.append(motif) | |
| elif len(line.split("\t")) == 4: | |
| seq = Seq(line.split("\t")[0]) | |
| instances.append(seq) | |
| elif "*" in line: | |
| mask = line.strip("\r\n") | |
| else: | |
| raise ValueError(line) | |
| return record | |