本文整理汇总了Python中xbrowse.Variant.toJSON方法的典型用法代码示例。如果您正苦于以下问题:Python Variant.toJSON方法的具体用法?Python Variant.toJSON怎么用?Python Variant.toJSON使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类xbrowse.Variant
的用法示例。
在下文中一共展示了Variant.toJSON方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: add_or_edit_variant_tags
# 需要导入模块: from xbrowse import Variant [as 别名]
# 或者: from xbrowse.Variant import toJSON [as 别名]
def add_or_edit_variant_tags(request):
family = None
if 'family_id' in request.GET:
project, family = get_project_and_family_for_user(request.user, request.GET)
else:
project = utils.get_project_for_user(request.user, request.GET)
form = api_forms.VariantTagsForm(project, request.GET)
if not form.is_valid():
ret = {
'is_error': True,
'error': server_utils.form_error_string(form)
}
return JSONResponse(ret)
variant = get_datastore(project.project_id).get_single_variant(
project.project_id,
family.family_id,
form.cleaned_data['xpos'],
form.cleaned_data['ref'],
form.cleaned_data['alt'],
)
if not variant:
variant = Variant(form.cleaned_data['xpos'], form.cleaned_data['ref'], form.cleaned_data['alt'])
variant_tags_to_delete = {
variant_tag.id: variant_tag for variant_tag in VariantTag.objects.filter(
family=family,
xpos=form.cleaned_data['xpos'],
ref=form.cleaned_data['ref'],
alt=form.cleaned_data['alt'])
}
project_tag_events = {}
for project_tag in form.cleaned_data['project_tags']:
# retrieve tags
tag, created = VariantTag.objects.get_or_create(
project_tag=project_tag,
family=family,
xpos=form.cleaned_data['xpos'],
ref=form.cleaned_data['ref'],
alt=form.cleaned_data['alt'],
)
if not created:
# this tag already exists so just keep it (eg. remove it from the set of tags that will be deleted)
del variant_tags_to_delete[tag.id]
continue
# this a new tag, so update who saved it and when
project_tag_events[project_tag] = "add_variant_tag"
tag.user = request.user
tag.date_saved = timezone.now()
tag.search_url = form.cleaned_data['search_url']
tag.save()
# delete the tags that are no longer checked.
for variant_tag in variant_tags_to_delete.values():
project_tag_events[variant_tag.project_tag] = "delete_variant_tag"
variant_tag.delete()
# add the extra info after updating the tag info in the database, so that the new tag info is added to the variant JSON
add_extra_info_to_variants_family(get_reference(), family, [variant,])
# log tag creation
for project_tag, event_type in project_tag_events.items():
try:
settings.EVENTS_COLLECTION.insert({
'event_type': event_type,
'date': timezone.now(),
'project_id': ''.join(project.project_id),
'family_id': family.family_id,
'tag': project_tag.tag,
'title': project_tag.title,
'xpos':form.cleaned_data['xpos'],
'pos':variant.pos,
'chrom': variant.chr,
'ref':form.cleaned_data['ref'],
'alt':form.cleaned_data['alt'],
'gene_names': ", ".join(variant.extras['gene_names'].values()),
'username': request.user.username,
'email': request.user.email,
'search_url': form.cleaned_data.get('search_url'),
})
except Exception as e:
logging.error("Error while logging add_variant_tag event: %s" % e)
return JSONResponse({
'is_error': False,
'variant': variant.toJSON(),
})