def test_parse_xmfa(): file = os.path.join(test_dir, 'test.xmfa') print file fh = open(file, 'r') alignments = parse_xmfa(fh) fh.close() assert len(alignments) == 2 assert len(alignments[0]) == 3 assert len(alignments[0][0]) == 12
column_coords = [] # current coordinate position for each seq in alignment strands = [] # list of strand information for each seq in alignment names = [] # list of sequence names for seq in aln: (start, strand, name) = parse_id(seq.id) names.append(name) strands.append(strand) column_coords.append(start) for x in range(len(aln[0])): row_coords = [] slice = aln[:, x] for y in range(len(slice)): if slice[y] != '-': row_coords.append(names[y] + ':' + str(column_coords[y])) if strands[y] == '+': column_coords[y] += 1 else: column_coords[y] -= 1 else: row_coords.append('-:-') coord_array.append(row_coords) return coord_array if __name__ == "__main__": fh = open(sys.argv[1], 'r') for alignment in parse_xmfa(fh): if len(alignment) < 2: continue for row in parse_coords(alignment): print ", ".join(row)