pyfermi is an Python interface to Heng Li's Fermi assembler. Use it with caution, as it's experimental and in beta.
import fermi
import random
random.seed(0)
def random_reads(seq, n, rlen=50):
for i in range(n):
pos = random.randint(0, len(seq)-rlen)
yield seq[pos:(pos+rlen)]
seq = """AACAAGATGGCCCTCTACGAGCAGTTCAGCGTCCCCTCCCAGCGCTTCGCCGCCAACGCCGCCAACACCGCCCCAGCCGCCGCCCCCCGCCCCGCCGCCAGCTACGCCGCCGTCTCCTCCGCCTCCGCCGGACAGATTGGTGGGATCGACAGACCTCTCTTTCCATCATTTTGCGTGCCTTCAAATGAACCTGTGCGTTTGCCCGAACACATCAAGACCAACTCGAGTGGGCGGGATGGCCAGGCTATATCTGGGAGGCTTTCCACCCAGCTTAAGAGCAAGGACGCCTATGCTGCAGGATCGACTGCTGAGTGTAGTAGTTCACAGCGTAGAGACAACAACAACAATAGCATGAAGAATTCTTCTGGGAAGAAGTTGACTAACGATGATGATTTTACGGTTCCTTCTGTCTTCTGCTCTGGAGCGCGCCCTCGTTCCAACCATGAGGAAGTGAGGATCCAAGAGAATGCCACACCCTTCCCAGCTACAAGTCCGTATAAGAGTGGGCCTACGGTGTCCAAACCAACTGCAAAATTTCCCAACACCGACAAGAGGTACCTGGAAGGAAGGAACGCGTCGGACACGAGATCAAGGGACTCTCCAAGTATTATCAGGGACAAAGCACCAGCAAACACAACGACAAACTTTTTGGAAACTGAAGAGAGGACTTCATCGTTCCAATTTTCTGCAGAGAAGACAATGGGTAAAAGAGATGACAAAGGTTCTTCGTATAGTAGGGTAAAAGAGACGAGCAGTATAAATGTTTCTGATAAGCAACATTCCCGAAACGAGGGGCATCAGGC"""
fermi = Fermi()
for read in random_reads(seq, 50, 70):
fermi.addseq(read)
fermi.correct()
tigs = fermi.assemble(do_clean=True)
ext.c
contains some extra C functions needed to wrap fermi. In some
cases, I need klib functions not packaged with fermi, for example
ksprintf
from kstring.c
. I try to keep things separate so fermi
can be updated without breaking anything.
- Unit tests.
- More with error correction.