Source code for pydna.readers

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright 2013-2023 by Björn Johansson.  All rights reserved.
# This code is part of the Python-dna distribution and governed by its
# license.  Please see the LICENSE.txt file that should have been included
# as part of this package.

"""Provides two functions, read and read_primer."""
from pydna.parsers import parse as _parse
from pydna.primer import Primer as _Primer


[docs]def read(data, ds=True): """This function is similar the :func:`parse` function but expects one and only one sequence or and exception is thrown. Parameters ---------- data : string see below ds : bool Double stranded or single stranded DNA, if True return Dseqrecord objects, else Bio.SeqRecord objects. Returns ------- Dseqrecord contains the first Dseqrecord or SeqRecord object parsed. Notes ----- The data parameter is similar to the data parameter for :func:`parse`. See Also -------- parse """ try: (result,) = _parse(data, ds) except ValueError as err: if "too many" in str(err): print(f"More than one sequence found in data:\n({str(data)[:79]})") elif "not enough" in str(err): print(f"No sequence found in data:\n({str(data)[:79]})") raise return result
[docs]def read_primer(data): """Use this function to read a primer sequence from a string or a local file. The usage is similar to the :func:`parse_primer` function.""" return _Primer(read(data, ds=False))
if __name__ == "__main__": import os as _os cached = _os.getenv("pydna_cached_funcs", "") _os.environ["pydna_cached_funcs"] = "" import doctest doctest.testmod(verbose=True, optionflags=doctest.ELLIPSIS) _os.environ["pydna_cached_funcs"] = cached