def registerReferenceSet(self, guid, assembly_id, source_accessions=None, description=None, references=OrderedDict()):
"""
ReferenceSet registration for MAF occurs from an assembly config file. See hg19.json for example.
ReferenceSet registration for VCF occurs from reading VCF contig tags in header.
Requires assembly ids and guids to be unique.
"""
referenceSet = self.session.query(ReferenceSet).filter(
or_(ReferenceSet.assembly_id == assembly_id, ReferenceSet.guid == guid))\
.first()
if referenceSet is None:
try:
referenceSet = ReferenceSet(
guid=guid, assembly_id=assembly_id, description=description)
self.session.add(referenceSet)
self.session.commit()
except exc.DataError as e:
self.session.rollback()
raise ValueError("{0} : {1} ".format(str(e), guid))
if len(references) > 0:
# use pyvcf like ordered dict to avoiding having to specify
# reference order manually
refs = sortReferences(references)
for ref in refs:
self.registerReference(
str(uuid.uuid4()), referenceSet.id, ref, refs[ref].length)
return referenceSet
评论列表
文章目录