from python import util dataset = [] while True: s = input() if not s: break dataset.append(s) pairs = set() corr = [] for x in dataset: if not x in pairs: cx = util.reverseComplement(x) if not cx in pairs: pairs.add(x) else: pairs.remove(cx) corr.append(x) corr.append(cx) else: pairs.remove(x) corr.append(x) err_list = list(pairs) for i in err_list: for j in corr: if util.getHammingDistance(i, j) == 1 or util.getHammingDistance(i, util.reverseComplement(j)) == 1: print("%s->%s" % (i, j)) break
queue.append(e) elif len(e.path) < len(node.path) + 1: e.path = node.path + [e] if e.value == start_node and len(node.path) >= data_len - k + 1: if not minPath or len(minPath) > len(node.path): minPath = node.path return minPath if __name__ == '__main__': s = [] while True: l = input() if not l: break s.append(l) un = set(s).union({reverseComplement(x) for x in s}) data_len = len(s[0]) k = data_len - 1 while k >= 1: edges = build_deBruijin_graph(un, k) g_visited_nodes = set() start_node = first(edges.keys()) path = None while True: visited_nodes = set() path = traverseGraph(start_node, edges, visited_nodes, k) if path: break g_visited_nodes |= visited_nodes
def build_deBruijin_graph(s): un = s.union({util.reverseComplement(x) for x in s}) return [(r[:-1], r[1:]) for r in un]