Skip to content

Commit

Permalink
Tie tags to chemsets at creation and only include those tags when pas…
Browse files Browse the repository at this point in the history
…sing to UI.
  • Loading branch information
Lanny committed Dec 8, 2019
1 parent 7f07b38 commit 8e82944
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 6 deletions.
38 changes: 38 additions & 0 deletions cspace/migrations/0004_auto_20191208_1956.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Generated by Django 2.2.6 on 2019-12-08 19:56

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('cspace', '0003_chemical_tpsa'),
]

operations = [
migrations.AddField(
model_name='chemicalset',
name='tags',
field=models.ManyToManyField(to='cspace.ChemicalTag'),
),
migrations.AlterField(
model_name='chemicalsetfacet',
name='embedding',
field=models.TextField(choices=[('3/RDK/MDS', '3/RDKit/Multidimensional Scaling'), ('3/RDK/NM-MDS', '3/RDKit/Non-Metric Multidimensional Scaling'), ('3/RDK/SMACOF', '3/RDKit/SMACOF Multidimensional Scaling'), ('3/RDK/NM-SMACOF', '3/RDKit/Non-Metric SMACOF Multidimensional Scaling'), ('3/TSNE', '3/TNSE')]),
),
migrations.AlterField(
model_name='chemicalsetfacet',
name='sim_measure',
field=models.TextField(choices=[('RDK/T', 'RDKit/Tanimoto'), ('GOBI/T', 'Gobi-Poppinger/Tanimoto')]),
),
migrations.AlterField(
model_name='computefacetjob',
name='embedding',
field=models.TextField(choices=[('3/RDK/MDS', '3/RDKit/Multidimensional Scaling'), ('3/RDK/NM-MDS', '3/RDKit/Non-Metric Multidimensional Scaling'), ('3/RDK/SMACOF', '3/RDKit/SMACOF Multidimensional Scaling'), ('3/RDK/NM-SMACOF', '3/RDKit/Non-Metric SMACOF Multidimensional Scaling'), ('3/TSNE', '3/TNSE')]),
),
migrations.AlterField(
model_name='computefacetjob',
name='sim_measure',
field=models.TextField(choices=[('RDK/T', 'RDKit/Tanimoto'), ('GOBI/T', 'Gobi-Poppinger/Tanimoto')]),
),
]
3 changes: 2 additions & 1 deletion cspace/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
('3/RDK/NM-MDS', '3/RDKit/Non-Metric Multidimensional Scaling'),
('3/RDK/SMACOF', '3/RDKit/SMACOF Multidimensional Scaling'),
('3/RDK/NM-SMACOF', '3/RDKit/Non-Metric SMACOF Multidimensional Scaling'),
('3/TSNE', '3/TNSE'),
('3/TSNE', '3/TSNE'),
)

class ChemicalTag(models.Model):
Expand All @@ -32,6 +32,7 @@ def __unicode__(self):
class ChemicalSet(models.Model):
name = models.TextField(unique=True)
created = models.DateField(auto_now_add=True)
tags = models.ManyToManyField(ChemicalTag)

def __str__(self):
return self.__unicode__()
Expand Down
10 changes: 5 additions & 5 deletions cspace/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,17 +70,16 @@ def get_facet_data(request, fid):
facet = get_object_or_404(ChemicalSetFacet, id=fid)

points = []
all_tags = set([])
all_tags = set(facet.chemical_set.tags.all())
max_dist_from_origin = 0

echems = (EmbeddedChemical.objects
.filter(facet=facet)
.select_related('chemical'))

for echem in echems:
tags = [tag.name for tag in echem.chemical.tags.all()]
tags = all_tags & set(echem.chemical.tags.all())
chem = echem.chemical
all_tags.update(tags)
position = json.loads(echem.position)

dist_from_origin = sum([c*c for c in position])
Expand All @@ -94,7 +93,7 @@ def get_facet_data(request, fid):
'smiles': chem.smiles,
'smiles': chem.smiles,
'pos': position,
'tags': tags,
'tags': [tag.name for tag in tags],
'pubchem_cid': chem.props.get('PUBCHEM_COMPOUND_CID', None),
'formula': chem.props.get('PUBCHEM_MOLECULAR_FORMULA', None),
'svg_url': reverse('draw-chem', args=(chem.pk,))
Expand All @@ -107,7 +106,7 @@ def get_facet_data(request, fid):
'simMeasure': facet.sim_measure,
'embedding': facet.embedding,
'maxDistFromOrigin': max_dist_from_origin ** 0.5,
'tags': sorted(list(all_tags))
'tags': sorted([tag.name for tag in all_tags])
},
'points': points,
})
Expand Down Expand Up @@ -159,6 +158,7 @@ def POST(self, request):

chems = Chemical.objects.filter(tags__in=tags)
chem_set.chemical_set.set(chems)
chem_set.tags.set(tags)

return HttpResponseRedirect(reverse('chemical-set-index'))

Expand Down

0 comments on commit 8e82944

Please sign in to comment.