Пример #1
0
    # open("fm.tex", "w").write(table)
    # subprocess.call(["pdflatex", "fm.tex"])
    # print(counts)
    fm = FMIndex(counts, occ, np.array(idxs))
    query = "TACTGATG"
    # query = "ACCGTTAGAGTCAG"
    smems = {
        smem
        for i in range(len(query)) for smem in fm.find_smem(query, i)
    }
    mems = fm.find_mems(query)
    sa = SuffixArray(idxs)
    print(smems)
    matches = {(t[0], t[1]): sa.get_intervals(t[2], t[1] - t[0])
               for t in smems}
    print(matches)
    print(mems)
    fig = Figure("memfig", "memfigs")
    fig.write(create_figure(orig_seq, matches, query))

    #
    # print fm.find_seq("ACGT")
    # print fm.find_seq("CG")
    # for s in suffices:
    #     print s
"""
ATTGAC
ATTCAC
"""
Пример #2
0
rev_c = {"A": "T", "C": "G", "G": "C", "T": "A", "$": "$"}
colors = ["red", "green", "blue", "yellow"]


def create_figure(seq, interval_dict, query):
    seq_fig = tikz_matrix("seq", body([seq, "".join(rev_c[c] for c in seq)]))
    query_fig = tikz_matrix("q", body([query]), "below=of seq")
    rec_1 = r"\node[color=%s, draw, dashed, rounded corners, fit=(seq-1-%s) (seq-1-%s)] {};"
    rec_2 = r"\node[color=%s, draw, dashed, rounded corners, fit=(seq-2-%s) (seq-2-%s)] {};"
    rec_q = r"\node[color=%s, draw, dashed, rounded corners, fit=(q-1-%s) (q-1-%s)] {};"
    lines = []
    N = len(seq)
    i = 0
    for (s, e), (intervals, reverse_intervals) in interval_dict.iteritems():
        lines.append(rec_q % (colors[i], s + 1, e))
        for (start, end) in intervals:
            lines.append(rec_1 % (colors[i], start + 1, end))

        for start, end in reverse_intervals:
            lines.append(rec_2 % (colors[i], N - end + 1, N - start))
        i += 1
    content = seq_fig + "\n" + query_fig + "\n" + "\n".join(lines)
    content = content.replace("$", r"\$")
    return content


if __name__ == "__main__":
    fig = Figure("memfig", "memfigs")
    fig.write(create_figure("ATTCT", {1: ([(0, 3), (2, 5)], [(1, 3)])}))
Пример #3
0
    path = backtrack_g(m, seq_graph, seq_graph2)
    print path
    figure = Figure("seqgraph_a", "seqalign_figs")
    c_text = r"\textcolor{red}{%s}"
    b_text = r"\textcolor{black!25}{%s}"
    m = [[
        c_text % c if (i, j) in path else b_text % c for j, c in enumerate(row)
    ] for i, row in enumerate(m)]
    elems = [list("." + labels)] + [[c] + row for c, row in zip(labels2, m)]
    edges2 = seq_graph2.get_tikz_edges()
    edges = seq_graph.get_tikz_edges(False)
    path_edge_template = r"\path[-stealth] (m-%s-%s) edge[color=red] (m-%s-%s);"
    path_edges = "\n".join([
        path_edge_template % (i + 2, j + 2, k + 2, l + 2)
        for (i, j), (k, l) in zip(path[:-1], path[1:])
    ])

    A, B = get_alignment(seq_graph._labels, seq_graph2._labels, path)
    alignment_matrix = tikz_matrix("am", body([A, B]), "below=of m")
    init = align2.generate_tikz("ga", "")
    init2 = align1.generate_tikz("gb", "below=of ga,")
    content = "\n".join([
        init, init2,
        tikz_matrix("m", body(elems), "below=of gb,"), edges, edges2,
        path_edges, alignment_matrix
    ])
    content = content.replace("#", r"\#")
    figure.write(content)
    # figure.write(seq_graph.to_tikz(False))
    # print(edges)