Source code for pydna.sequence_picker

#!/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.

from pydna.dseqrecord import Dseqrecord
import os as _os
import logging as _logging
from Bio.Blast import NCBIWWW
from Bio.Blast import NCBIXML

_module_logger = _logging.getLogger("pydna." + __name__)


email = _os.getenv("pydna_email")
tool = "pydna"


[docs]def genbank_accession(s: str) -> Dseqrecord: """docstring.""" s = Dseqrecord(s) NCBIWWW.email = email NCBIWWW.tool = tool result_handle = NCBIWWW.qblast( "blastn", "nt", str(s.seq), hitlist_size=1, alignments=1, descriptions=1, expect=1e-8, megablast=True, service="megablast", ungapped_alignment=True, ) blast_records = NCBIXML.read(result_handle) best_alignment, *rest = blast_records.alignments best_hsp, *rest = best_alignment.hsps dbs = best_hsp.sbjct start, stop = sorted((best_hsp.sbjct_start, best_hsp.sbjct_end)) result = Dseqrecord( dbs, circular=False, id=s.name, name=s.name, description=(f"{best_alignment.accession} " f"REGION: {start}..{stop}"), ) return result
if __name__ == "__main__": 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 pass