diff --git a/backend/metagenedb/api/catalog/urls.py b/backend/metagenedb/api/catalog/urls.py index ac82dd5f6d6d67bcd4850a0ec83a02e3a6d564a4..e4f6b6f387a0ca42a4cc53dc3553c9074b317226 100644 --- a/backend/metagenedb/api/catalog/urls.py +++ b/backend/metagenedb/api/catalog/urls.py @@ -54,7 +54,7 @@ class CustomRouter(DefaultRouter): api_router = CustomRouter() api_router.register(r'functions', views.FunctionViewSet, basename='functions') api_router.register(r'kegg-orthologies', views.KeggOrthologyViewSet, basename='kegg-orthologies') -api_router.register(r'eggnogs', views.EggNogViewSet, basename='eggnogs') +api_router.register(r'eggnogs', views.EggNOGv5ViewSet, basename='eggnogs') api_router.register(r'genes', views.GeneViewSet, basename='genes') api_router.register(r'taxonomy', views.TaxonomyViewSet, basename='taxonomy') diff --git a/backend/metagenedb/api/catalog/views/__init__.py b/backend/metagenedb/api/catalog/views/__init__.py index 8351328445619774425728d25c40d1d4394dedcf..07491013b0382a900af3e1ac28fa1a640ec929dd 100644 --- a/backend/metagenedb/api/catalog/views/__init__.py +++ b/backend/metagenedb/api/catalog/views/__init__.py @@ -1,3 +1,3 @@ -from .function import EggNogViewSet, KeggOrthologyViewSet, FunctionViewSet # noqa +from .function import EggNOGv5ViewSet, KeggOrthologyViewSet, FunctionViewSet # noqa from .gene import GeneViewSet # noqa from .taxonomy import TaxonomyViewSet # noqa diff --git a/backend/metagenedb/api/catalog/views/function.py b/backend/metagenedb/api/catalog/views/function.py index 3c014b84b67fcd46d73e28e95e7af4c9efcf4ed9..9d1dc4cc0edfcbd32b5465e30407f9115f2e4dbd 100644 --- a/backend/metagenedb/api/catalog/views/function.py +++ b/backend/metagenedb/api/catalog/views/function.py @@ -7,8 +7,8 @@ from rest_framework.viewsets import ModelViewSet from metagenedb.api.catalog.filters import FunctionFilter from metagenedb.api.catalog.qparams_validators.function import FunctionQueryParams -from metagenedb.apps.catalog.models import EggNog, Function, KeggOrthology -from metagenedb.apps.catalog.serializers import EggNogSerializer, FunctionSerializer, KeggOrthologySerializer +from metagenedb.apps.catalog.models import EggNOGv5, Function, KeggOrthology +from metagenedb.apps.catalog.serializers import EggNOGSerializer, FunctionSerializer, KeggOrthologySerializer from metagenedb.common.utils.external_api.togows import GetFunctionExternalInfo from .bulk_viewset import BulkViewSet @@ -57,7 +57,7 @@ class KeggOrthologyViewSet(ModelViewSet): return Response(returned_data) -class EggNogViewSet(ModelViewSet): - queryset = EggNog.objects.all() - serializer_class = EggNogSerializer +class EggNOGv5ViewSet(ModelViewSet): + queryset = EggNOGv5.objects.all() + serializer_class = EggNOGSerializer lookup_field = 'function_id' diff --git a/backend/metagenedb/api/catalog/views/test_function.py b/backend/metagenedb/api/catalog/views/test_function.py index 4173e0ad430f88a8d3e5c1e9ab7f4f77175200dd..5734445f2733c4d83789726d5034e03ce638a241 100644 --- a/backend/metagenedb/api/catalog/views/test_function.py +++ b/backend/metagenedb/api/catalog/views/test_function.py @@ -2,7 +2,7 @@ from rest_framework.test import APITestCase import mock -from metagenedb.apps.catalog.factory import EggNogFactory, KeggOrthologyFactory +from metagenedb.apps.catalog.factory import EggNOGv5Factory, KeggOrthologyFactory from metagenedb.common.utils.mocks.metagenedb import ( MetageneDBCatalogFunctionAPIMock, MetageneDBCatalogKeggOrthologyAPIMock ) @@ -14,7 +14,7 @@ class TestKeggOrthologyViewSet(APITestCase): self.function_api = MetageneDBCatalogFunctionAPIMock(self.client) self.kegg_ortho_api = MetageneDBCatalogKeggOrthologyAPIMock(self.client) self.kegg_function = KeggOrthologyFactory.create() - self.eggnog_function = EggNogFactory.create() + self.eggnog_function = EggNOGv5Factory.create() def test_retrieve(self): for function in [self.kegg_function, self.eggnog_function]: diff --git a/backend/metagenedb/apps/catalog/admin/function.py b/backend/metagenedb/apps/catalog/admin/function.py index 080d72febb246b08e28592763c166f54faad1074..c6a675b86f0dc41253a569199480f9c73a79e7d7 100644 --- a/backend/metagenedb/apps/catalog/admin/function.py +++ b/backend/metagenedb/apps/catalog/admin/function.py @@ -1,6 +1,6 @@ from django.contrib import admin -from metagenedb.apps.catalog.models import EggNog, EggNogFunctionalCategory, Function, KeggOrthology +from metagenedb.apps.catalog.models import EggNOGv5, EggNOGFunctionalCategory, Function, KeggOrthology @admin.register(KeggOrthology) @@ -17,8 +17,8 @@ class FunctionAdmin(admin.ModelAdmin): search_fields = ('function_id',) -@admin.register(EggNog) -class EggNogAdmin(admin.ModelAdmin): +@admin.register(EggNOGv5) +class EggNOGv5Admin(admin.ModelAdmin): list_display = ('function_id', 'name', 'get_functional_categories') search_fields = ('function_id', 'name') @@ -30,8 +30,8 @@ class EggNogAdmin(admin.ModelAdmin): get_functional_categories.short_description = 'Functional categories' -@admin.register(EggNogFunctionalCategory) -class EggNogFunctionalCategoryAdmin(admin.ModelAdmin): +@admin.register(EggNOGFunctionalCategory) +class EggNOGFunctionalCategoryAdmin(admin.ModelAdmin): list_display = ('category_id', 'name', 'group') search_fields = ('category_id', 'name') diff --git a/backend/metagenedb/apps/catalog/factory/__init__.py b/backend/metagenedb/apps/catalog/factory/__init__.py index a71524c265fb6f9438529dc167595aeeefa27430..a02fda04be86dd90dfc5a3b11c5fd37e61c4ac16 100644 --- a/backend/metagenedb/apps/catalog/factory/__init__.py +++ b/backend/metagenedb/apps/catalog/factory/__init__.py @@ -1,3 +1,3 @@ -from .function import EggNogFactory, FunctionFactory, KeggOrthologyFactory # noqa +from .function import EggNOGv5Factory, FunctionFactory, KeggOrthologyFactory # noqa from .gene import GeneFactory # noqa from .taxonomy import TaxonomyFactory # noqa diff --git a/backend/metagenedb/apps/catalog/factory/function.py b/backend/metagenedb/apps/catalog/factory/function.py index 4c918e4273da7b9825e0202fa6c971a7c2d5f17b..fc523e88f98bffc587b0e9c481985503af8ea39d 100644 --- a/backend/metagenedb/apps/catalog/factory/function.py +++ b/backend/metagenedb/apps/catalog/factory/function.py @@ -22,9 +22,9 @@ class FunctionFactory(BaseFunctionFactory): function_id = FuzzyLowerText(prefix='function-', length=15) -class EggNogFactory(BaseFunctionFactory): +class EggNOGv5Factory(BaseFunctionFactory): class Meta: - model = models.EggNog + model = models.EggNOGv5 class KeggOrthologyFactory(BaseFunctionFactory): diff --git a/backend/metagenedb/apps/catalog/management/commands/create_eggnog_functional_cat.py b/backend/metagenedb/apps/catalog/management/commands/create_eggnog_functional_cat.py index 2eb8c5c52a6434dddd29dbfa18eafc46d846b984..a5fb08ce9d9bfbb49c4ca2e157b87da90edaad6d 100644 --- a/backend/metagenedb/apps/catalog/management/commands/create_eggnog_functional_cat.py +++ b/backend/metagenedb/apps/catalog/management/commands/create_eggnog_functional_cat.py @@ -3,7 +3,7 @@ import logging from django.core.management.base import BaseCommand from django.core.exceptions import ValidationError -from metagenedb.apps.catalog.models import EggNogFunctionalCategory +from metagenedb.apps.catalog.models import EggNOGFunctionalCategory from metagenedb.common.utils.parsers.eggnog import EggNOGFunctionalCategoriesParser logging.basicConfig(format='[%(asctime)s] %(levelname)s:%(name)s:%(message)s') @@ -12,7 +12,7 @@ logger = logging.getLogger(__name__) class ImportEggNOGFunctionalCategories(object): LOOKUP_FIELD = 'category_id' - MODEL = EggNogFunctionalCategory + MODEL = EggNOGFunctionalCategory GROUP_MAPPING = { 'Information storage and processing': 'info_storage_processing', 'Cellular processes and signaling': 'cellular_processes_signaling', diff --git a/backend/metagenedb/apps/catalog/management/commands/create_update_eggnog.py b/backend/metagenedb/apps/catalog/management/commands/create_update_eggnog.py index bc14bc733711838f70da726041af3af4a7765069..3c6750f5de090491cb06b6937b31b3a35b8ecc17 100644 --- a/backend/metagenedb/apps/catalog/management/commands/create_update_eggnog.py +++ b/backend/metagenedb/apps/catalog/management/commands/create_update_eggnog.py @@ -3,7 +3,7 @@ import logging from django.core.management.base import BaseCommand from django.core.exceptions import ValidationError -from metagenedb.apps.catalog.models import EggNog, EggNogFunctionalCategory +from metagenedb.apps.catalog.models import EggNOGv5, EggNOGFunctionalCategory from metagenedb.common.utils.chunks import file_len from metagenedb.common.utils.parsers import EggNOGAnnotationLineParser @@ -24,7 +24,7 @@ class ImportEggNOG(object): self.skipped_errors = [] def _build_functional_category_dict(self): - all_categories = EggNogFunctionalCategory.objects.all() + all_categories = EggNOGFunctionalCategory.objects.all() if not all_categories: raise Exception("You need to create Functional categories first.") self.functional_cat_instances = {cat.category_id: cat for cat in all_categories} @@ -43,14 +43,14 @@ class ImportEggNOG(object): payload = {k: v for k, v in eggnog_dict.items() if v != ""} eggnog = None try: - eggnog = EggNog(**payload) + eggnog = EggNOGv5(**payload) eggnog.full_clean() eggnog.save() self.created_count += 1 except ValidationError as validation_error: if 'function_id' in validation_error.error_dict.keys(): try: - eggnog = EggNog.objects.get(function_id=payload.get('function_id')) + eggnog = EggNOGv5.objects.get(function_id=payload.get('function_id')) for k, v in payload.items(): setattr(eggnog, k, v) eggnog.full_clean() diff --git a/backend/metagenedb/apps/catalog/migrations/0016_rename_eggnog.py b/backend/metagenedb/apps/catalog/migrations/0016_rename_eggnog.py new file mode 100644 index 0000000000000000000000000000000000000000..bc77106a2c864d227a5ae5b663e3d2d605a68948 --- /dev/null +++ b/backend/metagenedb/apps/catalog/migrations/0016_rename_eggnog.py @@ -0,0 +1,22 @@ +# Generated by Django 3.0 on 2019-12-11 22:07 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('catalog', '0015_m2m_func_cat_eggnog'), + ] + + operations = [ + migrations.RenameModel( + old_name='EggNog', + new_name='EggNOGv5', + ), + migrations.AlterField( + model_name='eggnogv5', + name='functional_categories', + field=models.ManyToManyField(to='catalog.EggNOGFunctionalCategory'), + ), + ] diff --git a/backend/metagenedb/apps/catalog/models/__init__.py b/backend/metagenedb/apps/catalog/models/__init__.py index 7bcbc369864a0e4978ccc76cb2022fd209472ede..50aa3ddeabf0f49892c9db59f9b5f152e4fb89f4 100644 --- a/backend/metagenedb/apps/catalog/models/__init__.py +++ b/backend/metagenedb/apps/catalog/models/__init__.py @@ -1,3 +1,3 @@ -from .function import EggNog, EggNogFunctionalCategory, Function, KeggOrthology # noqa +from .function import EggNOGv5, EggNOGFunctionalCategory, Function, KeggOrthology # noqa from .gene import Gene, GeneFunction # noqa from .taxonomy import Taxonomy # noqa diff --git a/backend/metagenedb/apps/catalog/models/function.py b/backend/metagenedb/apps/catalog/models/function.py index 7a71d293330bbf4e65cfd05458334401cb687548..aa10577c604720186651e7a133c333c9fa69ff9e 100644 --- a/backend/metagenedb/apps/catalog/models/function.py +++ b/backend/metagenedb/apps/catalog/models/function.py @@ -36,7 +36,7 @@ class KeggOrthology(Function): verbose_name_plural = "KEGG orthologies" -class EggNogFunctionalCategory(models.Model): +class EggNOGFunctionalCategory(models.Model): GROUP_CHOICES = [ ('info_storage_processing', 'Information Storage and Processing'), ('cellular_processes_signaling', 'Cellular Processes and Signaling'), @@ -56,14 +56,14 @@ class EggNogFunctionalCategory(models.Model): verbose_name_plural = "EggNOG functional categories" -class EggNog(Function): +class EggNOGv5(Function): SOURCE = 'eggnog' - functional_categories = models.ManyToManyField(EggNogFunctionalCategory) + functional_categories = models.ManyToManyField(EggNOGFunctionalCategory) def __init__(self, *args, **kwargs): - super(EggNog, self).__init__(source=self.SOURCE, *args, **kwargs) + super(EggNOGv5, self).__init__(source=self.SOURCE, *args, **kwargs) class Meta: - verbose_name = "EggNOG" - verbose_name_plural = "EggNOGs" + verbose_name = "EggNOG v5.0" + verbose_name_plural = "EggNOGs v5.0" diff --git a/backend/metagenedb/apps/catalog/serializers/__init__.py b/backend/metagenedb/apps/catalog/serializers/__init__.py index 5865bd970bdbc101e93fbb3452d150ea2655f8d8..028e91addcd5c37a0b592a072193826f1ad00973 100644 --- a/backend/metagenedb/apps/catalog/serializers/__init__.py +++ b/backend/metagenedb/apps/catalog/serializers/__init__.py @@ -1,3 +1,3 @@ -from .function import EggNogSerializer, FunctionSerializer, KeggOrthologySerializer # noqa +from .function import EggNOGSerializer, FunctionSerializer, KeggOrthologySerializer # noqa from .gene import GeneSerializer # noqa from .taxonomy import TaxonomySerializer # noqa diff --git a/backend/metagenedb/apps/catalog/serializers/function.py b/backend/metagenedb/apps/catalog/serializers/function.py index 7e56f89c31464b9a15c8be1887030f950adfa71b..f937dd327c1c1d39fa288f89b1b8e80b137d227a 100644 --- a/backend/metagenedb/apps/catalog/serializers/function.py +++ b/backend/metagenedb/apps/catalog/serializers/function.py @@ -1,5 +1,5 @@ from rest_framework import serializers -from metagenedb.apps.catalog.models import EggNog, Function, KeggOrthology +from metagenedb.apps.catalog.models import EggNOGv5, Function, KeggOrthology from .bulk_list import BulkListSerializer @@ -18,17 +18,17 @@ class FunctionSerializer(serializers.ModelSerializer): fields = ('function_id', 'source', 'name') -class EggNogListSerializer(BulkListSerializer): +class EggNOGListSerializer(BulkListSerializer): class Meta: - model = EggNog + model = EggNOGv5 -class EggNogSerializer(serializers.ModelSerializer): +class EggNOGSerializer(serializers.ModelSerializer): class Meta: - model = EggNog - list_serializer_class = EggNogListSerializer + model = EggNOGv5 + list_serializer_class = EggNOGListSerializer fields = ('function_id', 'name', 'functional_categories') diff --git a/backend/metagenedb/common/utils/mocks/metagenedb.py b/backend/metagenedb/common/utils/mocks/metagenedb.py index 82b5e42bc8ce547ff0c420e5ae45a951953f9b63..ec8baee2d0d52780db568d687cee75b806d04843 100644 --- a/backend/metagenedb/common/utils/mocks/metagenedb.py +++ b/backend/metagenedb/common/utils/mocks/metagenedb.py @@ -90,5 +90,5 @@ class MetageneDBCatalogKeggOrthologyAPIMock(MetageneDBCatalogFunctionAPIMock): REVERSE_PATH = 'catalog:v1:kegg-orthologies' -class MetageneDBCatalogEggNogAPIMock(MetageneDBCatalogFunctionAPIMock): +class MetageneDBCatalogEggNOGv5APIMock(MetageneDBCatalogFunctionAPIMock): REVERSE_PATH = 'catalog:v1:eggnogs' diff --git a/backend/scripts/populate_db/test_import_igc_data.py b/backend/scripts/populate_db/test_import_igc_data.py index c0fa296315ecff5dcc52af045353aae484c00e68..9960d0216530f4a72ad4349ea5a00c708b01d764 100644 --- a/backend/scripts/populate_db/test_import_igc_data.py +++ b/backend/scripts/populate_db/test_import_igc_data.py @@ -4,13 +4,13 @@ from rest_framework.test import APITestCase from metagenedb.common.utils.mocks.metagenedb import ( MetageneDBCatalogTaxonomyAPIMock, - MetageneDBCatalogEggNogAPIMock, + MetageneDBCatalogEggNOGv5APIMock, MetageneDBCatalogKeggOrthologyAPIMock ) from metagenedb.apps.catalog.factory import ( TaxonomyFactory, KeggOrthologyFactory, - EggNogFactory + EggNOGv5Factory ) from scripts.populate_db.import_igc_data import ImportIGCGenes @@ -302,12 +302,12 @@ class TestBuildBuildFunctionCatalog(APITestCase): @classmethod def setUpTestData(cls): cls.keggs = KeggOrthologyFactory.create_batch(100) - cls.eggnogs = EggNogFactory.create_batch(100) + cls.eggnogs = EggNOGv5Factory.create_batch(100) def setUp(self): self.import_igc_genes = ImportIGCGenes('test', 'test_url', 'test_token') self.kegg_api_mock = MetageneDBCatalogKeggOrthologyAPIMock(self.client) - self.eggnog_api_mock = MetageneDBCatalogEggNogAPIMock(self.client) + self.eggnog_api_mock = MetageneDBCatalogEggNOGv5APIMock(self.client) self.import_igc_genes.metagenedb_kegg_api = self.kegg_api_mock self.import_igc_genes.metagenedb_eggnog_api = self.eggnog_api_mock