Source code for ncbitaxonomist.convert.ncbiaccession
"""
..
Copyright 2020 The University of Sydney
.. moduleauthor:: Jan P Buchmann <jan.buchmann@sydney.edu.au>
"""
import sys
from typing import Dict, Mapping, Type
import ncbitaxonomist.model.accession
import ncbitaxonomist.convert.converter
import ncbitaxonomist.convert.convertermap
[docs]class NcbiAccessionConverter(ncbitaxonomist.convert.converter.ModelConverter):
"""Convert NCBI accession data into model or model into attributes"""
[docs] def convert_to_model(self, attributes:Mapping[str,any], srcdb=None)->Type[ncbitaxonomist.model.accession.Accession]:
"""Converts NCBI attributes to accession model"""
mattribs = {'uid':attributes.pop('uid'), 'db': srcdb, 'accessions': {}}
self.map_inattributes(mattribs, attributes, ncbitaxonomist.convert.convertermap.attributes)
if srcdb not in ncbitaxonomist.convert.convertermap.accessions:
print("{}: database not supported".format(srcdb), file=sys.stdout)
return None
if srcdb in ncbitaxonomist.convert.convertermap.accessions:
for i in ncbitaxonomist.convert.convertermap.accessions[srcdb]:
if i in attributes:
mattribs['accessions'][i] = attributes.pop(i)
return ncbitaxonomist.model.accession.Accession(mattribs)
[docs] def convert_from_model(self, model:Type[ncbitaxonomist.model.accession.Accession], outdict=None)->Dict[str,str]:
"""Converts accession model to attributes"""
del outdict
attrib = model.attributes()
attrib.update({'accessions':{'uid':model.uid}})
return attrib