From bd372d56f7eac22498f213e31e6c7cefa71a6c17 Mon Sep 17 00:00:00 2001
From: AndiMajore <andi.majore@googlemail.com>
Date: Fri, 1 Jul 2022 17:37:00 +0200
Subject: [PATCH] nedrex integration mainly done

---
 data/.gitignore                       |  1 +
 docker-compose.yml                    | 12 +++----
 drugstone/management/commands/test.py | 51 ---------------------------
 drugstone/models.py                   |  6 ++++
 drugstone/views.py                    |  4 +--
 scripts/docker-entrypoint.sh          |  3 +-
 6 files changed, 16 insertions(+), 61 deletions(-)
 create mode 100644 data/.gitignore
 delete mode 100644 drugstone/management/commands/test.py

diff --git a/data/.gitignore b/data/.gitignore
new file mode 100644
index 0000000..6f8cd63
--- /dev/null
+++ b/data/.gitignore
@@ -0,0 +1 @@
+data.zip
diff --git a/docker-compose.yml b/docker-compose.yml
index aed9f48..05c85e6 100755
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -15,7 +15,7 @@ services:
       - drugstone_db_schema_volume:/usr/src/drugstone/drugstone/migrations
       - drugstone_data_volume:/usr/src/drugstone/data
     ports:
-      - 8002:8000
+      - 8001:8000
     networks:
       - drugstone_net
     depends_on:
@@ -26,8 +26,8 @@ services:
     container_name: drugstone_postgres
     restart: always
     hostname: drugstone_postgres
-#    ports:
-#      - 5432:5432
+    ports:
+      - 5432:5432
     networks:
       - drugstone_net
     volumes:
@@ -95,8 +95,8 @@ networks:
 
 volumes:
   drugstone_db_volume:
-    external: true
+#    external: true
   drugstone_db_schema_volume:
-    external: true
+#    external: true
   drugstone_data_volume:
-    external: true
\ No newline at end of file
+#    external: true
\ No newline at end of file
diff --git a/drugstone/management/commands/test.py b/drugstone/management/commands/test.py
deleted file mode 100644
index 4d01dd4..0000000
--- a/drugstone/management/commands/test.py
+++ /dev/null
@@ -1,51 +0,0 @@
-import python_nedrex as nedrex
-from python_nedrex.core import get_nodes, get_edges, get_api_key
-from python_nedrex.static import get_metadata
-
-def iter_node_collection(coll_name, eval):
-    offset = 0
-    limit = 10000
-    while True:
-        result = get_nodes(coll_name, offset=offset, limit=limit)
-        if not result:
-            return
-        for node in result:
-            eval(node)
-        offset += limit
-
-
-def iter_edge_collection(coll_name, eval):
-    offset = 0
-    limit = 10000
-    while True:
-        result = get_edges(coll_name, offset=offset, limit=limit)
-        if not result:
-            return
-        for edge in result:
-            eval(edge)
-        offset += limit
-
-
-def iter_ppi(eval):
-    from python_nedrex import ppi
-    offset = 0
-    limit = 1000
-    while True:
-        result = ppi.ppis({"exp"},skip = offset, limit=limit)
-        if not result:
-            return
-        for edge in result:
-            eval(edge)
-        offset += limit
-
-base_url = "http://82.148.225.92:8123/"
-nedrex.config.set_url_base(base_url)
-api_key = get_api_key(accept_eula=True)
-nedrex.config.set_api_key(api_key)
-print(f'Nodes: {nedrex.core.get_node_types()}')
-print(f'Edges: {nedrex.core.get_edge_types()}')
-print(f'{get_metadata()}')
-
-
-iter_ppi(lambda node: print(node))
-# iter_edge_collection("gene_expressed_in_tissue", lambda node: {print(node)})
\ No newline at end of file
diff --git a/drugstone/models.py b/drugstone/models.py
index 4f160db..5391a43 100755
--- a/drugstone/models.py
+++ b/drugstone/models.py
@@ -129,6 +129,9 @@ class Disorder(models.Model):
     def __ne__(self, other):
         return not self.__eq__(other)
 
+    def __hash__(self):
+        return hash((self.mondo_id, self.label, self.icd10))
+
     def update(self, other):
         self.mondo_id = other.mondo_id
         self.label = other.label
@@ -152,6 +155,9 @@ class Drug(models.Model):
     def __ne__(self, other):
         return not self.__eq__(other)
 
+    def __hash__(self):
+        return hash((self.drug_id, self.name, self.status))
+
     def update(self, other):
         self.drug_id = other.drug_id
         self.name = other.name
diff --git a/drugstone/views.py b/drugstone/views.py
index 6491d09..7822f3a 100755
--- a/drugstone/views.py
+++ b/drugstone/views.py
@@ -531,7 +531,7 @@ def adjacent_disorders(request) -> Response:
     data = request.data
     if 'proteins' in data:
         drugstone_ids = data.get('proteins', [])
-        pdi_dataset = 'DisGeNET'
+        pdi_dataset = data.get('dataset','DisGeNET')
         # find adjacent drugs by looking at drug-protein edges
         pdis_objects = ProteinDisorderAssociation.objects.filter(protein__id__in=drugstone_ids,
                                                                  pdis_dataset__name=pdi_dataset)
@@ -541,7 +541,7 @@ def adjacent_disorders(request) -> Response:
         disorders = DisorderSerializer(many=True).to_representation(disorders)
     elif 'drugs' in data:
         drugstone_ids = data.get('drugs', [])
-        drdi_dataset = 'DrugBank'
+        drdi_dataset = data.get('dataset','DrugBank')
         # find adjacent drugs by looking at drug-protein edges
         drdi_objects = DrugDisorderIndication.objects.filter(drug__id__in=drugstone_ids,
                                                              drdi_dataset__name=drdi_dataset)
diff --git a/scripts/docker-entrypoint.sh b/scripts/docker-entrypoint.sh
index 6dc4cd8..c033d37 100755
--- a/scripts/docker-entrypoint.sh
+++ b/scripts/docker-entrypoint.sh
@@ -1,6 +1,6 @@
 #!/bin/bash
 
-file="docker-entrypoint.lock"
+file="data/docker-entrypoint.lock"
 # exit if entrypoint.lock exists to prevent new import of data every time docker is restarted
 
 
@@ -13,7 +13,6 @@ if ! test -f "$file"; then
     python3 manage.py cleanuptasks
     python3 manage.py populate_db -u --all
     python3 manage.py make_graphs
-
     touch $file
 fi
 
-- 
GitLab