for row in zip(*dna_strings): count = Counter(row) self._matrix.append([ count['A'], count['C'], count['G'], count['T']]) self._consensus = '' def __str__(self): return pprint.pformat(list(zip(*self._matrix))) @property def consensus(self): possibles = list('ACGT') parts = [] for row in self._matrix: most_common = max(range(len(row)), key=row.__getitem__) parts.append(possibles[most_common]) return ''.join(parts) @consensus.setter def consensus(self, value): raise TypeError('Profile matrix object does not support assignment.') with open('data/consensus_and_profile.txt') as fp: p = ProfileMatrix(parse_fasta(fp).values()) print(p.consensus)
from bioinformatics.genetics import gc_content from bioinformatics.genetics import parse_fasta with open('data/computing_gc_content.txt') as file_handle: dna_strings = parse_fasta(file_handle) gc_contents = [(id_, gc_content(dna_string)) for id_, dna_string in dna_strings] print(*sorted(gc_contents, key=lambda x: x[1])[-1], sep='\n')