diff --git a/backend/metagenedb/api/catalog/urls.py b/backend/metagenedb/api/catalog/urls.py index 1d920ce0db195427839210f8471a266117d28b8e..f71083be3190f1610505b0052e27ceecc13c9585 100644 --- a/backend/metagenedb/api/catalog/urls.py +++ b/backend/metagenedb/api/catalog/urls.py @@ -1,5 +1,6 @@ from django.urls import path -from django.conf.urls import url, include +from django.conf.urls import include +from django.urls import re_path from rest_framework.routers import DefaultRouter, DynamicRoute, Route from metagenedb.api.catalog import views @@ -64,7 +65,7 @@ api_router.register(r'statistics', views.StatisticsViewSet, basename='statistics urlpatterns = [ - url(r'v1/', include((api_router.urls, 'v1'))), + re_path(r'v1/', include((api_router.urls, 'v1'))), path('admin/', include(('metagenedb.api.catalog.admin_urls', 'admin'))), path('celery-task-test/', test_task_view, name='celery-task-test'), ] diff --git a/backend/metagenedb/common/utils/external_api/test_togows.py b/backend/metagenedb/common/utils/external_api/test_togows.py index 1752ead8a0cd7140ae6fa6a964a92076a08d098f..88ad41c6e40d97d091ff507df7348023195df990 100644 --- a/backend/metagenedb/common/utils/external_api/test_togows.py +++ b/backend/metagenedb/common/utils/external_api/test_togows.py @@ -14,11 +14,11 @@ class TestGetFunctionExternalInfo(TestCase): external_info_retriever.get_details() def test_get_details_kegg(self): - with mock.patch('metagenedb.common.utils.external_api.togows.TogoWSEntryAPI') as MockTogoWSEntryAPI: - MockTogoWSEntryAPI.return_value.get.return_value = [{"info": "some_info"}] + with mock.patch('metagenedb.common.utils.external_api.togows.KEGGAPI') as MockKEGGAPI: + MockKEGGAPI.return_value.get.return_value.dict.return_value = {"info": "some_info"} test_url = "http://test.com/" test_id = "test_kegg_id" - MockTogoWSEntryAPI.return_value.url = test_url + MockKEGGAPI.return_value.url = test_url expected_dict = { 'info': 'some_info', settings.API_KEY_ADDITIONAL_INFO: { diff --git a/backend/metagenedb/common/utils/external_api/togows.py b/backend/metagenedb/common/utils/external_api/togows.py index 560b55cad201bc84b471d73fb86151102e538c97..14ff0a76507f4b1f9f188b6786021046b33bdb49 100644 --- a/backend/metagenedb/common/utils/external_api/togows.py +++ b/backend/metagenedb/common/utils/external_api/togows.py @@ -2,7 +2,7 @@ import logging from django.conf import settings -from dabeplech.togows import TogoWSEntryAPI +from dabeplech import KEGGAPI logger = logging.getLogger(__name__) @@ -21,8 +21,9 @@ class GetFunctionExternalInfo: """ Get detailed information from KEGG orthology through Togows. """ - kegg_api = TogoWSEntryAPI("kegg-orthology") - response = kegg_api.get(self.function_id)[0] + logger.info("Retrieving information from KEGG API") + kegg_api = KEGGAPI() + response = kegg_api.get(self.function_id).dict() response[settings.API_KEY_ADDITIONAL_INFO] = { 'comment': f"Information retrieved from external source: {kegg_api.url}", 'url': f"{kegg_api.url}{self.function_id}" @@ -30,5 +31,4 @@ class GetFunctionExternalInfo: return response def get_details(self): - logger.info("Retrieving information from KEGG through togows") return getattr(self, f"_get_{self.source}", self._get_unknown_source)() diff --git a/backend/metagenedb/common/utils/test_df_operations.py b/backend/metagenedb/common/utils/test_df_operations.py index 502db40713ba2217d36ac1ffb899cdb6b7668b21..882da11bd8b5bc21d2c15ec36d60672c2d3bb575 100644 --- a/backend/metagenedb/common/utils/test_df_operations.py +++ b/backend/metagenedb/common/utils/test_df_operations.py @@ -1,7 +1,7 @@ from unittest import TestCase import pandas as pd -from pandas.util.testing import assert_series_equal +from pandas.testing import assert_series_equal from metagenedb.common.utils.df_operations import get_mask diff --git a/backend/metagenedb/urls.py b/backend/metagenedb/urls.py index 03aa55aa3b56bfec4b9f90a9f53b2a326c66b501..17db747e2497b10ea5aeb7521124234a61e89981 100644 --- a/backend/metagenedb/urls.py +++ b/backend/metagenedb/urls.py @@ -14,12 +14,11 @@ Including another URLconf 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ from django.contrib import admin -from django.urls import include, path -from django.conf.urls import url +from django.urls import include, path, re_path urlpatterns = [ path('api/', include(('metagenedb.api.urls', 'api'))), path('admin/', admin.site.urls), - url(r'^ht/', include('health_check.urls')), + re_path(r'^ht/', include('health_check.urls')), ] diff --git a/docker-compose.yaml b/docker-compose.yaml index 03de0946faba47fc72af0e1e490d79ef007bc3e2..3917125d0b90bba4bb9d80d0efdcae05abd2c6b4 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -5,6 +5,7 @@ services: container_name: backend build: context: ./backend + image: metagenedb-backend volumes: - ./backend:/code - django-static:/backend/public/static @@ -73,13 +74,13 @@ services: celery: container_name: celery - build: - context: ./backend + image: metagenedb-backend volumes: - ./backend:/code depends_on: - postgresql - redis + - backend command: bash -c 'manage.py watch_celery' networks: - main diff --git a/frontend/src/components/keggcard/keggcard.js b/frontend/src/components/keggcard/keggcard.js index 5e783a1b90f2a66f69dd860f1b119d23b51fb885..fd92c8a1bff576275d65636e4ced36245058962f 100644 --- a/frontend/src/components/keggcard/keggcard.js +++ b/frontend/src/components/keggcard/keggcard.js @@ -69,7 +69,6 @@ export default { this.buildPathways(response), this.buildDiseases(response), this.buildModules(response), - this.buildReferences(response), ]; }, buildPathways(response) { @@ -78,17 +77,19 @@ export default { icon: 'fas fa-bezier-curve', content: [], }; - Object.entries(response.data.pathways).forEach(([key, value]) => { - pathways.content.push( - { - id: key, - name: value, - url: `https://www.genome.jp/kegg-bin/show_pathway?${key}+${this.keggId}`, - url_label: "Open in KEGG", - fetch: true, - }, - ); - }); + if(response.data.pathways) { + Object.entries(response.data.pathways).forEach(([key, value]) => { + pathways.content.push( + { + id: key, + name: value, + url: `https://www.genome.jp/kegg-bin/show_pathway?${key}+${this.keggId}`, + url_label: "Open in KEGG", + fetch: true, + }, + ); + }); + } return pathways; }, buildModules(response) { @@ -97,16 +98,18 @@ export default { icon: 'fas fa-bezier-curve', content: [], }; - Object.entries(response.data.modules).forEach(([key, value]) => { - modules.content.push( - { - id: key, - name: value, - url: `https://www.genome.jp/kegg-bin/show_module?${key}+${this.keggId}`, - url_label: "Open in KEGG" - }, - ); - }); + if(response.data.modules) { + Object.entries(response.data.modules).forEach(([key, value]) => { + modules.content.push( + { + id: key, + name: value, + url: `https://www.genome.jp/kegg-bin/show_module?${key}+${this.keggId}`, + url_label: "Open in KEGG" + }, + ); + }); + } return modules; }, buildDiseases(response) { @@ -115,15 +118,17 @@ export default { icon: 'fas fa-laptop-medical', content: [], }; - Object.entries(response.data.diseases).forEach(([key, value]) => { - diseases.content.push( - { - id: key, - name: value, - url: `https://www.genome.jp/dbget-bin/www_bget?ds:${key}`, - }, - ); - }); + if(response.data.diseases) { + Object.entries(response.data.diseases).forEach(([key, value]) => { + diseases.content.push( + { + id: key, + name: value, + url: `https://www.genome.jp/dbget-bin/www_bget?ds:${key}`, + }, + ); + }); + } return diseases; }, buildReferences(response) { @@ -132,16 +137,18 @@ export default { icon: 'fas fa-book-open', content: [], }; - for (let i = 0; i < response.data.references.length; i++) { - references.content.push( - { - id: response.data.references[i].title, - name: `${response.data.references[i].authors[0]} et al. ${response.data.references[i].journal}`, - url: `https://www.ncbi.nlm.nih.gov/pubmed/${response.data.references[i].pubmed}`, - url_label: "Open in Pubmed" - }, - ); - }; + if (response.data.references) { + for (let i = 0; i < response.data.references.length; i++) { + references.content.push( + { + id: response.data.references[i].title, + name: `${response.data.references[i].authors[0]} et al. ${response.data.references[i].journal}`, + url: `https://www.ncbi.nlm.nih.gov/pubmed/${response.data.references[i].pubmed}`, + url_label: "Open in Pubmed" + }, + ); + }; + } return references; }, },