diff --git a/deploy_dev.sh b/deploy_dev.sh old mode 100644 new mode 100755 diff --git a/deploy_prod.sh b/deploy_prod.sh index 45e4fab1c7546f4fee910569eb5e392d76010c58..145fd9f2f00a5aebcc4d42cda275fb26d9d32f49 100755 --- a/deploy_prod.sh +++ b/deploy_prod.sh @@ -1,2 +1,9 @@ -docker build -t gitlab.rrz.uni-hamburg.de:4567/cosy-bio/drugst.one/backend:prod -f ./Dockerfile . -docker push gitlab.rrz.uni-hamburg.de:4567/cosy-bio/drugst.one/backend:prod \ No newline at end of file +#!/bin/bash + +branch=$(git rev-parse --abbrev-ref HEAD) +if [ "$branch" == "production" ]; then + docker build -t gitlab.rrz.uni-hamburg.de:4567/cosy-bio/drugst.one/backend:prod -f ./Dockerfile . + docker push gitlab.rrz.uni-hamburg.de:4567/cosy-bio/drugst.one/backend:prod +else + echo "DENIED: Your are not in the production branch. Do not push to production from the ${branch} branch." +fi diff --git a/docker-compose-prod.yml b/docker-compose-prod.yml new file mode 100755 index 0000000000000000000000000000000000000000..cb01d8975c389a6f3d57b3e3046e6ab395d7b833 --- /dev/null +++ b/docker-compose-prod.yml @@ -0,0 +1,122 @@ +version: '3.3' + +services: + frontend: + container_name: drugstone_frontend + image: gitlab.rrz.uni-hamburg.de:4567/cosy-bio/drugst.one/website:prod + restart: always + ports: + - 8031:80 + networks: + - drugstone + labels: + - "com.centurylinklabs.watchtower.enable=true" + backend: + image: gitlab.rrz.uni-hamburg.de:4567/cosy-bio/drugst.one/backend:prod + container_name: drugstone_backend + command: + - "sh" + - "scripts/docker-entrypoint.sh" + env_file: + - 'docker-django.env' + restart: always + volumes: + - drugstone_db_schema_volume:/usr/src/drugstone/drugstone/migrations + - drugstone_data_volume:/usr/src/drugstone/data + ports: + - 8032:8000 + networks: + - drugstone + depends_on: + - db + - redis + labels: + - "com.centurylinklabs.watchtower.enable=true" + db: + image: postgres + container_name: drugstone_postgres + restart: always + hostname: drugstone_postgres +# ports: +# - 5432:5432 + networks: + - drugstone + volumes: + - drugstone_db_volume:/var/lib/postgresql/data + environment: + - POSTGRES_DB=drugstone + - POSTGRES_USER=drugstone + - POSTGRES_PASSWORD=t6278yczAH7rPKVMxaDD + command: + - "postgres" + - "-c" + - "max_connections=10000" + - "-c" + - "shared_buffers=2GB" + redis: + image: redis + container_name: drugstone_redis + restart: always + command: ["redis-server"] + networks: + - drugstone +# ports: +# - 6379:6379 + celery: + image: gitlab.rrz.uni-hamburg.de:4567/cosy-bio/drugst.one/backend:prod + command: + - "sh" + - "scripts/start_celery_worker.sh" + restart: always + container_name: drugstone_celery + hostname: drugstone_celery + volumes: + - drugstone_data_volume:/usr/src/drugstone/data + env_file: + - './docker-django.env' + depends_on: + - redis + - db + networks: + - drugstone + labels: + - "com.centurylinklabs.watchtower.enable=true" + celery-beat: + image: gitlab.rrz.uni-hamburg.de:4567/cosy-bio/drugst.one/backend:prod + command: + - "sh" + - "scripts/start_celery_beat.sh" + container_name: drugstone_celery_beat + hostname: drugstone_celery_beat + restart: always + env_file: + - './docker-django.env' + depends_on: + - redis + - db + networks: + - drugstone + labels: + - "com.centurylinklabs.watchtower.enable=true" + cdn: + build: cdn + image: drugstone_cdn + container_name: drugstone_cdn + restart: always + volumes: + - drugstone_cdn_volume:/app/files + ports: + - 8033:80 + +networks: + drugstone: + +volumes: + drugstone_db_volume: + external: true + drugstone_db_schema_volume: + external: true + drugstone_data_volume: + external: true + drugstone_cdn_volume: + external: true \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 3b0d7a3f1faf7e7e38c1603be71a306914b77660..4e8688633619205a4b2cba1d6684d1a05feab2d7 100755 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ version: '3.3' services: - app: + backend: image: drugstone_backend container_name: drugstone_backend command: @@ -72,6 +72,7 @@ services: command: - "sh" - "scripts/start_celery_beat.sh" + restart: always image: drugstone_backend container_name: drugstone_celery_beat hostname: drugstone_celery_beat diff --git a/docker-django.env b/docker-django.env index b4216e4c78942ead06292499cbfe65d298f1c067..9bf4bf33e4554aafa7a51088eb57885b753ab769 100755 --- a/docker-django.env +++ b/docker-django.env @@ -10,4 +10,6 @@ SQL_HOST=drugstone_postgres SQL_PORT=5432 REDIS_HOST=redis REDIS_PORT=6379 -GT_THREADS=16 \ No newline at end of file +GT_THREADS=16 +DJANGO_SETTINGS_MODULE=drugstone.settings +CELERY_BROKER_URL=redis://redis:6379/0 \ No newline at end of file diff --git a/drugstone/management/includes/DatasetLoader.py b/drugstone/management/includes/DatasetLoader.py index ad23f090d31a05b8a509d36cf01821f16c1ed7b2..804a3df0136edeaca6ce41444f0b1a12c48f4fb2 100644 --- a/drugstone/management/includes/DatasetLoader.py +++ b/drugstone/management/includes/DatasetLoader.py @@ -146,7 +146,7 @@ def get_drug_target_drugbank(): name='DrugBank', link='https://go.drugbank.com/', version='5.1.7', - licenced=False + licenced=True ) return dataset diff --git a/drugstone/views.py b/drugstone/views.py index 1b5ae628cb5fe16db6925d68f63398b5b98f0794..b2ef1ea245a923e0cf3d469d3245fe723a539bc4 100755 --- a/drugstone/views.py +++ b/drugstone/views.py @@ -225,7 +225,7 @@ def create_network(request) -> Response: while True: try: Network.objects.create(id=id, nodes=request.data['network']['nodes'], - edges=request.data['network']['edges'], config=request.data['config'], + edges=request.data['network']['edges'], config=request.data['config'], groups=request.data['groups']) break except IntegrityError: @@ -248,9 +248,9 @@ def load_network(request) -> Response: network = NetworkSerializer().to_representation(Network.objects.get(id=request.query_params.get('id'))) result = {'network': {'nodes': json.loads(network['nodes'].replace("'", '"')), 'edges': json.loads(network['edges'].replace("'", '"'))}, - 'config': json.loads( + 'config': json.loads( network['config'].replace("'", '"').replace('True', 'true').replace('False', 'false')), - 'groups': json.loads( + 'groups': json.loads( network['groups'].replace("'", '"').replace('True', 'true').replace('False', 'false'))} return Response(result) @@ -375,7 +375,9 @@ def result_view(request) -> Response: detail['ensg'] = list(set(detail['ensg'])) edges = parameters['input_network']['edges'] + edge_endpoint_ids = set() + # TODO check for custom edges when working again with ensemble gene ids for edge in edges: edge_endpoint_ids.add(edge['from']) @@ -383,11 +385,10 @@ def result_view(request) -> Response: nodes_mapped, id_key = query_proteins_by_identifier(edge_endpoint_ids, identifier) - if 'autofill_edges' in parameters['config'] and parameters['config']['autofill_edges']: - prots = list(filter(lambda n: n['drugstone_type'] == 'protein', - filter(lambda n: 'drugstone_type' in n and node_name_attribute in n, parameters['input_network']['nodes']))) + filter(lambda n: 'drugstone_type' in n and node_name_attribute in n, + parameters['input_network']['nodes']))) proteins = {node_name[1:] for node in prots for node_name in node[node_name_attribute]} dataset = DEFAULTS['ppi'] if 'interaction_protein_protein' not in parameters['config'] else \ @@ -400,7 +401,6 @@ def result_view(request) -> Response: interaction_objects)) edges.extend(auto_edges) - result['network']['edges'].extend(edges) uniq_edges = dict() for edge in result['network']['edges']: @@ -530,10 +530,10 @@ def adjacent_disorders(request) -> Response: data = request.data if 'proteins' in data: drugstone_ids = data.get('proteins', []) - pdi_dataset = get_pdis_ds(data.get('dataset', DEFAULTS['pdis']), data.get('licenced', False)) + pdis_dataset = get_pdis_ds(data.get('dataset', DEFAULTS['pdis']), data.get('licenced', False)) # find adjacent drugs by looking at drug-protein edges pdis_objects = ProteinDisorderAssociation.objects.filter(protein__id__in=drugstone_ids, - pdis_dataset_id=pdi_dataset.id) + pdis_dataset_id=pdis_dataset.id) disorders = {e.disorder for e in pdis_objects} # serialize edges = ProteinDisorderAssociationSerializer(many=True).to_representation(pdis_objects) diff --git a/scripts/docker-entrypoint.sh b/scripts/docker-entrypoint.sh index db7a2d39ad5d4040b6dd34294c675ea20ae7b9bf..43bf32df3da5898d25d96f8abd734edf4872ea3c 100755 --- a/scripts/docker-entrypoint.sh +++ b/scripts/docker-entrypoint.sh @@ -4,7 +4,7 @@ python3 manage.py makemigrations drugstone python3 manage.py migrate python3 manage.py createfixtures python3 manage.py cleanuptasks -#python3 manage.py populate_db --update -a -#python3 manage.py make_graphs +python3 manage.py populate_db --update -a +python3 manage.py make_graphs /usr/bin/supervisord -c "/etc/supervisor/conf.d/supervisord.conf" diff --git a/tasks/trust_rank.py b/tasks/trust_rank.py index 8f5c40c55981f191fef0c63ea369b04710318945..2283d74337e88c1a7212252dd43b4c680902a332 100755 --- a/tasks/trust_rank.py +++ b/tasks/trust_rank.py @@ -208,7 +208,6 @@ def trust_rank(task_hook: TaskHook): if ppi_dataset['licenced'] or pdi_dataset['licenced']: filename += "_licenced" filename = os.path.join(task_hook.data_directory, filename+".gt") - print(filename) g, seed_ids, drug_ids = read_graph_tool_graph(filename, seeds, id_space, max_deg, include_indirect_drugs, include_non_approved_drugs, search_target) if custom_edges: diff --git a/tasks/util/read_graph_tool_graph.py b/tasks/util/read_graph_tool_graph.py index 2db32cfd3b1064fca2276d8f98db063ff018ef98..ca70eefd4dc5f3fd41a3324dc71f69dbb55bc7dc 100755 --- a/tasks/util/read_graph_tool_graph.py +++ b/tasks/util/read_graph_tool_graph.py @@ -125,11 +125,6 @@ def read_graph_tool_graph(file_path, seeds, id_space, max_deg, include_indirect_ for edge in deleted_edges: g.remove_edge(edge) g.set_fast_edge_removal(fast=False) - # vertices = 0 - # for _ in g.vertices(): - # vertices += 1 - # edges = 0 - # for _ in g.edges(): - # edges += 1 + # Return the graph and the indices of the seed_ids and the seeds. return g, list(seed_ids.keys()), drug_ids diff --git a/tasks/util/scores_to_results.py b/tasks/util/scores_to_results.py index 4db5e69078bd757f6ee62c9d96d9e8898054b28a..b690db510699139e7c8a368c80103a892018440b 100755 --- a/tasks/util/scores_to_results.py +++ b/tasks/util/scores_to_results.py @@ -45,7 +45,7 @@ def scores_to_results( drug_in_path = False for vertex in vertices: - if g.vertex_properties["type"][int(vertex)] == "Drug" and vertex != candidate: + if g.vertex_properties["type"][int(vertex)] == "drug" and vertex != candidate: drug_in_path = True break if drug_in_path: @@ -67,7 +67,7 @@ def scores_to_results( drug_in_path = False for vertex in vertices: - if g.vertex_properties["type"][int(vertex)] == "Drug" and vertex != candidate: + if g.vertex_properties["type"][int(vertex)] == "drug" and vertex != candidate: drug_in_path = True break if drug_in_path: