diff --git a/ippisite/db.sqlite3.REMOVED.git-id b/ippisite/db.sqlite3.REMOVED.git-id index 5e100e09278b7714ed0dbcffa669c581934849af..bdaa3c932d4fa59e49c154e7e115fc2ca8b41d7e 100644 --- a/ippisite/db.sqlite3.REMOVED.git-id +++ b/ippisite/db.sqlite3.REMOVED.git-id @@ -1 +1 @@ -484ef6ada16ce17d584108ab14d1ec6467385442 \ No newline at end of file +b5ded9e1a05b9a0751e6d1addad0faf88524c8ca \ No newline at end of file diff --git a/ippisite/ippidb/management/commands/lle_le.py b/ippisite/ippidb/management/commands/lle_le.py index 2e04f1cf9cae7560c1624916c78a461d48707ef8..12f59779743b5c3cebfe8957c27e9d50b8117c33 100644 --- a/ippisite/ippidb/management/commands/lle_le.py +++ b/ippisite/ippidb/management/commands/lle_le.py @@ -15,14 +15,19 @@ class Command(BaseCommand): le_lle_data = [] LeLleBiplotData.objects.all().delete() self.stdout.write( - self.style.SUCCESS('Successfully flushed LE-LLE biplot data table')) + self.style.SUCCESS('Successfully flushed LE-LLE biplot data')) for comp in Compound.objects.all(): - print(comp.id) - le = round(comp.le, 7) - lle = round(comp.lle, 7) - le_lle_data.append({'x': le, 'y': lle, 'id': comp.id, 'family_name': comp.best_activity_ppi_name}) + if comp.le is not None: + le = round(comp.le, 7) + lle = round(comp.lle, 7) + le_lle_data.append({'x': le, 'y': lle, 'id': comp.id, 'family_name': comp.best_pXC50_activity_ppi_name}) + else: + self.stdout.write( + self.style.WARNING('compound %s has no LE (probably because no pXC50 activity results have been registered)' % comp.id)) le_lle_json = json.dumps(le_lle_data, separators=(',',':')) new = LeLleBiplotData() new.le_lle_biplot_data = le_lle_json new.save() + self.stdout.write( + self.style.SUCCESS('Successfully generated LE-LLE biplot data')) print(len(le_lle_json)) diff --git a/ippisite/ippidb/models.py b/ippisite/ippidb/models.py index 787862e2bb90e7875fbfea80f3aeff4d5364d69b..4758dfe32a8fbdbbc9a56789b2966b659099ed47 100644 --- a/ippisite/ippidb/models.py +++ b/ippisite/ippidb/models.py @@ -408,27 +408,45 @@ class Compound(models.Model): def pfizer_global(self): return self.pfizer_a_log_p and self.pfizer_tpsa + @property + def best_pXC50_activity(self): + return self.compoundactivityresult_set.filter(activity_type__in=['pIC50','pEC50']).aggregate(Max('activity'))['activity__max'] + + @property + def best_pXC50_compound_activity_result(self): + best_pXC50_activity = self.best_pXC50_activity + if best_pXC50_activity is None: + return None + return self.compoundactivityresult_set.filter(activity_type__in=['pIC50','pEC50'], activity=best_pXC50_activity)[0] + @property def le(self): """ LE: Ligand Efficiency """ - return (1.37 * float(self.compoundactivityresult_set.aggregate(Max('activity'))['activity__max']))/self.nb_atom_non_h + best_pXC50_activity = self.best_pXC50_activity + if best_pXC50_activity is None: + return None + return (1.37 * float(best_pXC50_activity))/self.nb_atom_non_h @property def lle(self): """ LLE: Lipophilic Efficiency """ - return float(self.compoundactivityresult_set.aggregate(Max('activity'))['activity__max'] - self.a_log_p) + best_pXC50_activity = self.best_pXC50_activity + if best_pXC50_activity is None: + return None + return float(best_pXC50_activity - self.a_log_p) @property - def best_activity_ppi_name(self): + def best_pXC50_activity_ppi_name(self): """ LE: Ligand Efficiency """ - best_activity = self.compoundactivityresult_set.aggregate(Max('activity'))['activity__max'] - best_activity_car = self.compoundactivityresult_set.filter(activity=best_activity)[0] + best_activity_car = self.best_pXC50_compound_activity_result + if best_activity_car is None: + return None ppi_name = best_activity_car.test_activity_description.ppi.name return ppi_name diff --git a/ippisite/ippidb/templates/compound_card.html b/ippisite/ippidb/templates/compound_card.html index 74291eef1c3e7e8e6e2de947344c47a05009ced5..a861664da6b33dbe248fa0ed8c55329dab172008 100644 --- a/ippisite/ippidb/templates/compound_card.html +++ b/ippisite/ippidb/templates/compound_card.html @@ -159,7 +159,7 @@ <div class="card-body"> <canvas id="le_lle_biplot"></canvas> <script> - drawLeLleBiplotChart('le_lle_biplot', {{ compound.id }}, '{{ compound.best_activity_ppi_name }}', {{ biplot_data | safe }}) + drawLeLleBiplotChart('le_lle_biplot', {{ compound.id }}, '{{ compound.best_pXC50_activity_ppi_name|default_if_none:"No target family identified" }}', {{ biplot_data | safe }}) </script> </div> </div>