本文整理汇总了Python中common.selection.Selection类的典型用法代码示例。如果您正苦于以下问题:Python Selection类的具体用法?Python Selection怎么用?Python Selection使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Selection类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: get_context_data
def get_context_data(self, **kwargs):
"""get context from parent class (really only relevant for child classes of this class, as TemplateView does
not have any context variables)"""
context = super().get_context_data(**kwargs)
# get selection from session and add to context
# get simple selection from session
simple_selection = self.request.session.get('selection', False)
# create full selection and import simple selection (if it exists)
selection = Selection()
# on the first page of a workflow, clear the selection (or dont' import from the session)
if self.step is not 1:
if simple_selection:
selection.importer(simple_selection)
context['selection'] = {}
context['selection']['tree_settings'] = selection.tree_settings
for selection_box, include in self.selection_boxes.items():
if include:
context['selection'][selection_box] = selection.dict(selection_box)['selection'][selection_box]
# get attributes of this class and add them to the context
attributes = inspect.getmembers(self, lambda a:not(inspect.isroutine(a)))
for a in attributes:
if not(a[0].startswith('__') and a[0].endswith('__')):
context[a[0]] = a[1]
return context
示例2: post
def post (self, request, *args, **kwargs):
# create full selection and import simple selection (if it exists)
simple_selection = request.session.get('selection', False)
selection = Selection()
if simple_selection:
selection.importer(simple_selection)
if 'ref_file' in request.FILES:
request.session['ref_file'] = request.FILES['ref_file']
if 'alt_files' in request.FILES:
request.session['alt_files'] = request.FILES.getlist('alt_files')
context = super(SuperpositionWorkflowSelection, self).get_context_data(**kwargs)
context['selection'] = {}
for selection_box, include in self.selection_boxes.items():
if include:
context['selection'][selection_box] = selection.dict(selection_box)['selection'][selection_box]
attributes = inspect.getmembers(self, lambda a:not(inspect.isroutine(a)))
for a in attributes:
if not(a[0].startswith('__') and a[0].endswith('__')):
context[a[0]] = a[1]
return render(request, self.template_name, context)
示例3: get_context_data
def get_context_data(self, **kwargs):
self.buttons = {
'continue': {
'label': 'Download substructures',
'url': '/structure/superposition_workflow_results/custom',
'color': 'success',
},
}
context = super(SuperpositionWorkflowSelection, self).get_context_data(**kwargs)
simple_selection = self.request.session.get('selection', False)
selection = Selection()
if simple_selection:
selection.importer(simple_selection)
context['selection'] = {}
context['selection']['site_residue_groups'] = selection.site_residue_groups
context['selection']['active_site_residue_group'] = selection.active_site_residue_group
for selection_box, include in self.selection_boxes.items():
if include:
context['selection'][selection_box] = selection.dict(selection_box)['selection'][selection_box]
# get attributes of this class and add them to the context
attributes = inspect.getmembers(self, lambda a:not(inspect.isroutine(a)))
for a in attributes:
if not(a[0].startswith('__') and a[0].endswith('__')):
context[a[0]] = a[1]
return context
示例4: get
def get(self, request, *args, **kwargs):
if self.kwargs['substructure'] == 'custom':
return HttpResponseRedirect('/structure/generic_numbering_selection')
simple_selection = self.request.session.get('selection', False)
selection = Selection()
if simple_selection:
selection.importer(simple_selection)
out_stream = StringIO()
io = PDBIO()
request.session['gn_outfile'].seek(0)
gn_struct = PDBParser(PERMISSIVE=True, QUIET=True).get_structure(request.session['gn_outfname'], request.session['gn_outfile'])[0]
if self.kwargs['substructure'] == 'full':
io.set_structure(gn_struct)
io.save(out_stream)
if self.kwargs['substructure'] == 'substr':
io.set_structure(gn_struct)
io.save(out_stream, GenericNumbersSelector(parsed_selection=SelectionParser(selection)))
root, ext = os.path.splitext(request.session['gn_outfname'])
response = HttpResponse(content_type="chemical/x-pdb")
response['Content-Disposition'] = 'attachment; filename="{}_GPCRDB.pdb"'.format(root)
response.write(out_stream.getvalue())
return response
示例5: TargetDetails
def TargetDetails(request, **kwargs):
if 'slug' in kwargs:
slug = kwargs['slug']
if slug.count('_') == 0 :
ps = AssayExperiment.objects.filter(protein__family__parent__parent__parent__slug=slug, ligand__properities__web_links__web_resource__slug = 'chembl_ligand')
elif slug.count('_') == 1 and len(slug) == 7:
ps = AssayExperiment.objects.filter(protein__family__parent__parent__slug=slug, ligand__properities__web_links__web_resource__slug = 'chembl_ligand')
elif slug.count('_') == 2:
ps = AssayExperiment.objects.filter(protein__family__parent__slug=slug, ligand__properities__web_links__web_resource__slug = 'chembl_ligand')
#elif slug.count('_') == 3:
elif slug.count('_') == 1 and len(slug) != 7:
ps = AssayExperiment.objects.filter(protein__entry_name = slug, ligand__properities__web_links__web_resource__slug = 'chembl_ligand')
if slug.count('_') == 1 and len(slug) == 7:
f = ProteinFamily.objects.get(slug=slug)
else:
f = slug
context = {
'target':f
}
else:
simple_selection = request.session.get('selection', False)
selection = Selection()
if simple_selection:
selection.importer(simple_selection)
if selection.targets != []:
prot_ids = [x.item.id for x in selection.targets]
ps = AssayExperiment.objects.filter(protein__in=prot_ids, ligand__properities__web_links__web_resource__slug = 'chembl_ligand')
context = {
'target': ', '.join([x.item.entry_name for x in selection.targets])
}
ps = ps.values('standard_type',
'standard_relation',
'standard_value',
'assay_description',
'assay_type',
#'standard_units',
'pchembl_value',
'ligand__id',
'ligand__properities_id',
'ligand__properities__web_links__index',
#'ligand__properities__vendors__vendor__name',
'protein__species__common_name',
'protein__entry_name',
'ligand__properities__mw',
'ligand__properities__logp',
'ligand__properities__rotatable_bonds',
'ligand__properities__smiles',
'ligand__properities__hdon',
'ligand__properities__hacc','protein'
).annotate(num_targets = Count('protein__id', distinct=True))
for record in ps:
record['purchasability'] = 'Yes' if len(LigandVendorLink.objects.filter(lp=record['ligand__properities_id']).exclude(vendor__name__in=['ZINC', 'ChEMBL', 'BindingDB', 'SureChEMBL', 'eMolecules', 'MolPort', 'PubChem'])) > 0 else 'No'
context['proteins'] = ps
return render(request, 'target_details.html', context)
示例6: SelectionAnnotation
def SelectionAnnotation(request):
"""Updates the selected level of annotation"""
protein_source = request.GET['protein_source']
if protein_source == 'All':
pss = ProteinSource.objects.all()
else:
pss = ProteinSource.objects.filter(name=protein_source)
# get simple selection from session
simple_selection = request.session.get('selection', False)
# create full selection and import simple selection (if it exists)
selection = Selection()
if simple_selection:
selection.importer(simple_selection)
# reset the annotation selection
selection.clear('annotation')
# add the selected items to the selection
for ps in pss:
selection_object = SelectionItem('annotation', ps)
selection.add('annotation', 'annotation', selection_object)
# export simple selection that can be serialized
simple_selection = selection.exporter()
# add simple selection to session
request.session['selection'] = simple_selection
return render(request, 'common/selection_filters_annotation.html', selection.dict('annotation'))
示例7: ToggleFamilyTreeNode
def ToggleFamilyTreeNode(request):
"""Opens/closes a node in the family selection tree"""
action = request.GET['action']
type_of_selection = request.GET['type_of_selection']
node_id = request.GET['node_id']
parent_tree_indent_level = int(request.GET['tree_indent_level'])
tree_indent_level = []
for i in range(parent_tree_indent_level+1):
tree_indent_level.append(0)
parent_tree_indent_level = tree_indent_level[:]
del parent_tree_indent_level[-1]
# session
simple_selection = request.session.get('selection')
selection = Selection()
if simple_selection:
selection.importer(simple_selection)
ppf = ProteinFamily.objects.get(pk=node_id)
if action == 'expand':
pfs = ProteinFamily.objects.filter(parent=node_id)
# species filter
species_list = []
for species in selection.species:
species_list.append(species.item)
# annotation filter
protein_source_list = []
for protein_source in selection.annotation:
protein_source_list.append(protein_source.item)
if species_list:
ps = Protein.objects.order_by('id').filter(family=ppf,
species__in=(species_list),
source__in=(protein_source_list)).order_by('source_id', 'id')
else:
ps = Protein.objects.order_by('id').filter(family=ppf,
source__in=(protein_source_list)).order_by('source_id', 'id')
action = 'collapse'
else:
pfs = ps = {}
action = 'expand'
return render(request, 'common/selection_tree.html', {
'action': action,
'type_of_selection': type_of_selection,
'ppf': ppf,
'pfs': pfs,
'ps': ps,
'parent_tree_indent_level': parent_tree_indent_level,
'tree_indent_level': tree_indent_level,
})
示例8: TargetPurchasabilityDetails
def TargetPurchasabilityDetails(request, **kwargs):
simple_selection = request.session.get('selection', False)
selection = Selection()
if simple_selection:
selection.importer(simple_selection)
if selection.targets != []:
prot_ids = [x.item.id for x in selection.targets]
ps = AssayExperiment.objects.filter(protein__in=prot_ids, ligand__properities__web_links__web_resource__slug = 'chembl_ligand')
context = {
'target': ', '.join([x.item.entry_name for x in selection.targets])
}
ps = ps.values('standard_type',
'standard_relation',
'standard_value',
'assay_description',
'assay_type',
'standard_units',
'pchembl_value',
'ligand__id',
'ligand__properities_id',
'ligand__properities__web_links__index',
'ligand__properities__vendors__vendor__id',
'ligand__properities__vendors__vendor__name',
'protein__species__common_name',
'protein__entry_name',
'ligand__properities__mw',
'ligand__properities__logp',
'ligand__properities__rotatable_bonds',
'ligand__properities__smiles',
'ligand__properities__hdon',
'ligand__properities__hacc','protein'
).annotate(num_targets = Count('protein__id', distinct=True))
purchasable = []
for record in ps:
try:
if record['ligand__properities__vendors__vendor__name'] in ['ZINC', 'ChEMBL', 'BindingDB', 'SureChEMBL', 'eMolecules', 'MolPort', 'PubChem', 'IUPHAR/BPS Guide to PHARMACOLOGY']:
continue
tmp = LigandVendorLink.objects.filter(vendor=record['ligand__properities__vendors__vendor__id'], lp=record['ligand__properities_id'])[0]
record['vendor_id'] = tmp.vendor_external_id
record['vendor_link'] = tmp.url
purchasable.append(record)
except:
continue
context['proteins'] = purchasable
return render(request, 'target_purchasability_details.html', context)
示例9: SelectionSpeciesToggle
def SelectionSpeciesToggle(request):
"""Updates the selected species arbitrary selections"""
species_id = request.GET['species_id']
all_sps = Species.objects.all()
sps = Species.objects.filter(pk=species_id)
# get simple selection from session
simple_selection = request.session.get('selection', False)
# create full selection and import simple selection (if it exists)
selection = Selection()
if simple_selection:
selection.importer(simple_selection)
# add the selected items to the selection
for sp in sps:
exists = selection.remove('species', 'species', species_id)
if not exists:
selection_object = SelectionItem('species', sp)
selection.add('species', 'species', selection_object)
# export simple selection that can be serialized
simple_selection = selection.exporter()
# add simple selection to session
request.session['selection'] = simple_selection
# add all species objects to context (for comparison to selected species)
context = selection.dict('species')
context['sps'] = Species.objects.all()
return render(request, 'common/selection_filters_species_selector.html', context)
示例10: SelectionSchemesToggle
def SelectionSchemesToggle(request):
"""Updates the selected numbering schemes arbitrary selections"""
numbering_scheme_id = request.GET['numbering_scheme_id']
gns = ResidueNumberingScheme.objects.filter(pk=numbering_scheme_id)
# get simple selection from session
simple_selection = request.session.get('selection', False)
# create full selection and import simple selection (if it exists)
selection = Selection()
if simple_selection:
selection.importer(simple_selection)
# add the selected items to the selection
for gn in gns:
exists = selection.remove('numbering_schemes', 'numbering_schemes', numbering_scheme_id)
if not exists:
selection_object = SelectionItem('numbering_schemes', gn)
selection.add('numbering_schemes', 'numbering_schemes', selection_object)
# export simple selection that can be serialized
simple_selection = selection.exporter()
# add simple selection to session
request.session['selection'] = simple_selection
# add all species objects to context (for comparison to selected species)
context = selection.dict('numbering_schemes')
context['gns'] = ResidueNumberingScheme.objects.exclude(slug=settings.DEFAULT_NUMBERING_SCHEME)
return render(request, 'common/selection_filters_numbering_schemes.html', context)
示例11: ResiduesUpload
def ResiduesUpload(request):
"""Receives a file containing generic residue positions along with numbering scheme and adds those to the selection."""
# get simple selection from session
simple_selection = request.session.get('selection', False)
# create full selection and import simple selection (if it exists)
selection = Selection()
if simple_selection:
selection.importer(simple_selection)
selection_type = 'segments'
if request.FILES == {}:
return render(request, 'common/selection_lists.html', '')
#Overwriting the existing selection
selection.clear(selection_type)
#The excel file
o = []
workbook = xlrd.open_workbook(file_contents=request.FILES['xml_file'].read())
worksheets = workbook.sheet_names()
for worksheet_name in worksheets:
worksheet = workbook.sheet_by_name(worksheet_name)
for row in worksheet.get_rows():
if len(row) < 2:
continue
try:
if row[0].value == 'residue':
position = ResidueGenericNumberEquivalent.objects.get(label=row[2].value, scheme__slug=row[1].value)
o.append(position)
elif row[0].value == 'helix':
o.append(ProteinSegment.objects.get(slug=row[2].value))
except Exception as msg:
print(msg)
continue
for obj in o:
# add the selected item to the selection
if obj.__class__.__name__ == 'ResidueGenericNumberEquivalent':
selection_subtype = 'residue'
else:
selection_subtype = 'helix'
selection_object = SelectionItem(selection_subtype, obj)
selection.add(selection_type, selection_subtype, selection_object)
# export simple selection that can be serialized
simple_selection = selection.exporter()
# add simple selection to session
request.session['selection'] = simple_selection
return render(request, 'common/selection_lists.html', selection.dict(selection_type))
示例12: SelectAlignableSegments
def SelectAlignableSegments(request):
"""Adds all alignable segments to the selection"""
selection_type = request.GET['selection_type']
# get simple selection from session
simple_selection = request.session.get('selection', False)
# create full selection and import simple selection (if it exists)
selection = Selection()
if simple_selection:
selection.importer(simple_selection)
# get all segments
segments = ProteinSegment.objects.filter(partial=False, slug__startswith='TM')
for segment in segments:
selection_object = SelectionItem(segment.category, segment)
# add the selected item to the selection
selection.add(selection_type, segment.category, selection_object)
# export simple selection that can be serialized
simple_selection = selection.exporter()
# add simple selection to session
request.session['selection'] = simple_selection
return render(request, 'common/selection_lists.html', selection.dict(selection_type))
示例13: SelectAlignableSegments
def SelectAlignableSegments(request):
"""Adds all alignable segments to the selection"""
selection_type = request.GET['selection_type']
# get simple selection from session
simple_selection = request.session.get('selection', False)
# create full selection and import simple selection (if it exists)
selection = Selection()
if simple_selection:
selection.importer(simple_selection)
# get all segments
# get all segments
if "protein_type" in request.GET:
gsegments = definitions.G_PROTEIN_SEGMENTS
preserved = Case(*[When(slug=pk, then=pos) for pos, pk in enumerate(gsegments['Structured'])])
segments = ProteinSegment.objects.filter(slug__in = gsegments['Structured'], partial=False).order_by(preserved)
else:
segments = ProteinSegment.objects.filter(partial=False, slug__startswith='TM')
for segment in segments:
selection_object = SelectionItem(segment.category, segment)
# add the selected item to the selection
selection.add(selection_type, segment.category, selection_object)
# export simple selection that can be serialized
simple_selection = selection.exporter()
# add simple selection to session
request.session['selection'] = simple_selection
return render(request, 'common/selection_lists.html', selection.dict(selection_type))
示例14: SelectResidueFeature
def SelectResidueFeature(request):
"""Receives a selection request, add a feature selection to an item, and returns the updated selection"""
selection_type = request.GET['selection_type']
selection_subtype = request.GET['selection_subtype']
selection_id = int(request.GET['selection_id'])
feature = request.GET['feature']
# get simple selection from session
simple_selection = request.session.get('selection', False)
# create full selection and import simple selection (if it exists)
selection = Selection()
if simple_selection:
selection.importer(simple_selection)
# process selected object
if selection_type == 'segments' and selection_subtype == 'site_residue':
for obj in selection.segments:
if int(obj.item.id) == selection_id:
obj.properties['feature'] = feature
obj.properties['amino_acids'] = ','.join(definitions.AMINO_ACID_GROUPS[feature])
break
# export simple selection that can be serialized
simple_selection = selection.exporter()
# add simple selection to session
request.session['selection'] = simple_selection
# context
context = selection.dict(selection_type)
# amino acid groups
amino_acid_groups = {
'amino_acid_groups': definitions.AMINO_ACID_GROUPS,
'amino_acid_group_names': definitions.AMINO_ACID_GROUP_NAMES }
context.update(amino_acid_groups)
# template to load
template = 'common/selection_lists_sitesearch.html'
return render(request, template, context)
示例15: SelectResidueGroup
def SelectResidueGroup(request):
"""Receives a selection request, updates the active residue group, and returns the updated selection"""
selection_type = request.GET['selection_type']
group_id = int(request.GET['group_id'])
# get simple selection from session
simple_selection = request.session.get('selection', False)
# create full selection and import simple selection (if it exists)
selection = Selection()
if simple_selection:
selection.importer(simple_selection)
# update the selected group
selection.active_site_residue_group = group_id
# export simple selection that can be serialized
simple_selection = selection.exporter()
# add simple selection to session
request.session['selection'] = simple_selection
# context
context = selection.dict(selection_type)
# amino acid groups
amino_acid_groups = {
'amino_acid_groups': definitions.AMINO_ACID_GROUPS,
'amino_acid_group_names': definitions.AMINO_ACID_GROUP_NAMES }
context.update(amino_acid_groups)
# template to load
template = 'common/selection_lists_sitesearch.html'
return render(request, template, context)