Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Metagenomics
metagenedb
Commits
bef0add0
Commit
bef0add0
authored
Dec 11, 2019
by
Kenzo-Hugo Hillion
♻
Browse files
change table to contain version of eggnog
parent
db4cb890
Pipeline
#19817
passed with stages
in 2 minutes and 25 seconds
Changes
16
Pipelines
1
Show whitespace changes
Inline
Side-by-side
backend/metagenedb/api/catalog/urls.py
View file @
bef0add0
...
@@ -54,7 +54,7 @@ class CustomRouter(DefaultRouter):
...
@@ -54,7 +54,7 @@ class CustomRouter(DefaultRouter):
api_router
=
CustomRouter
()
api_router
=
CustomRouter
()
api_router
.
register
(
r
'functions'
,
views
.
FunctionViewSet
,
basename
=
'functions'
)
api_router
.
register
(
r
'functions'
,
views
.
FunctionViewSet
,
basename
=
'functions'
)
api_router
.
register
(
r
'kegg-orthologies'
,
views
.
KeggOrthologyViewSet
,
basename
=
'kegg-orthologies'
)
api_router
.
register
(
r
'kegg-orthologies'
,
views
.
KeggOrthologyViewSet
,
basename
=
'kegg-orthologies'
)
api_router
.
register
(
r
'eggnogs'
,
views
.
EggN
og
ViewSet
,
basename
=
'eggnogs'
)
api_router
.
register
(
r
'eggnogs'
,
views
.
EggN
OGv5
ViewSet
,
basename
=
'eggnogs'
)
api_router
.
register
(
r
'genes'
,
views
.
GeneViewSet
,
basename
=
'genes'
)
api_router
.
register
(
r
'genes'
,
views
.
GeneViewSet
,
basename
=
'genes'
)
api_router
.
register
(
r
'taxonomy'
,
views
.
TaxonomyViewSet
,
basename
=
'taxonomy'
)
api_router
.
register
(
r
'taxonomy'
,
views
.
TaxonomyViewSet
,
basename
=
'taxonomy'
)
...
...
backend/metagenedb/api/catalog/views/__init__.py
View file @
bef0add0
from
.function
import
EggN
og
ViewSet
,
KeggOrthologyViewSet
,
FunctionViewSet
# noqa
from
.function
import
EggN
OGv5
ViewSet
,
KeggOrthologyViewSet
,
FunctionViewSet
# noqa
from
.gene
import
GeneViewSet
# noqa
from
.gene
import
GeneViewSet
# noqa
from
.taxonomy
import
TaxonomyViewSet
# noqa
from
.taxonomy
import
TaxonomyViewSet
# noqa
backend/metagenedb/api/catalog/views/function.py
View file @
bef0add0
...
@@ -7,8 +7,8 @@ from rest_framework.viewsets import ModelViewSet
...
@@ -7,8 +7,8 @@ from rest_framework.viewsets import ModelViewSet
from
metagenedb.api.catalog.filters
import
FunctionFilter
from
metagenedb.api.catalog.filters
import
FunctionFilter
from
metagenedb.api.catalog.qparams_validators.function
import
FunctionQueryParams
from
metagenedb.api.catalog.qparams_validators.function
import
FunctionQueryParams
from
metagenedb.apps.catalog.models
import
EggN
og
,
Function
,
KeggOrthology
from
metagenedb.apps.catalog.models
import
EggN
OGv5
,
Function
,
KeggOrthology
from
metagenedb.apps.catalog.serializers
import
EggN
og
Serializer
,
FunctionSerializer
,
KeggOrthologySerializer
from
metagenedb.apps.catalog.serializers
import
EggN
OG
Serializer
,
FunctionSerializer
,
KeggOrthologySerializer
from
metagenedb.common.utils.external_api.togows
import
GetFunctionExternalInfo
from
metagenedb.common.utils.external_api.togows
import
GetFunctionExternalInfo
from
.bulk_viewset
import
BulkViewSet
from
.bulk_viewset
import
BulkViewSet
...
@@ -57,7 +57,7 @@ class KeggOrthologyViewSet(ModelViewSet):
...
@@ -57,7 +57,7 @@ class KeggOrthologyViewSet(ModelViewSet):
return
Response
(
returned_data
)
return
Response
(
returned_data
)
class
EggN
og
ViewSet
(
ModelViewSet
):
class
EggN
OGv5
ViewSet
(
ModelViewSet
):
queryset
=
EggN
og
.
objects
.
all
()
queryset
=
EggN
OGv5
.
objects
.
all
()
serializer_class
=
EggN
og
Serializer
serializer_class
=
EggN
OG
Serializer
lookup_field
=
'function_id'
lookup_field
=
'function_id'
backend/metagenedb/api/catalog/views/test_function.py
View file @
bef0add0
...
@@ -2,7 +2,7 @@ from rest_framework.test import APITestCase
...
@@ -2,7 +2,7 @@ from rest_framework.test import APITestCase
import
mock
import
mock
from
metagenedb.apps.catalog.factory
import
EggN
og
Factory
,
KeggOrthologyFactory
from
metagenedb.apps.catalog.factory
import
EggN
OGv5
Factory
,
KeggOrthologyFactory
from
metagenedb.common.utils.mocks.metagenedb
import
(
from
metagenedb.common.utils.mocks.metagenedb
import
(
MetageneDBCatalogFunctionAPIMock
,
MetageneDBCatalogKeggOrthologyAPIMock
MetageneDBCatalogFunctionAPIMock
,
MetageneDBCatalogKeggOrthologyAPIMock
)
)
...
@@ -14,7 +14,7 @@ class TestKeggOrthologyViewSet(APITestCase):
...
@@ -14,7 +14,7 @@ class TestKeggOrthologyViewSet(APITestCase):
self
.
function_api
=
MetageneDBCatalogFunctionAPIMock
(
self
.
client
)
self
.
function_api
=
MetageneDBCatalogFunctionAPIMock
(
self
.
client
)
self
.
kegg_ortho_api
=
MetageneDBCatalogKeggOrthologyAPIMock
(
self
.
client
)
self
.
kegg_ortho_api
=
MetageneDBCatalogKeggOrthologyAPIMock
(
self
.
client
)
self
.
kegg_function
=
KeggOrthologyFactory
.
create
()
self
.
kegg_function
=
KeggOrthologyFactory
.
create
()
self
.
eggnog_function
=
EggN
og
Factory
.
create
()
self
.
eggnog_function
=
EggN
OGv5
Factory
.
create
()
def
test_retrieve
(
self
):
def
test_retrieve
(
self
):
for
function
in
[
self
.
kegg_function
,
self
.
eggnog_function
]:
for
function
in
[
self
.
kegg_function
,
self
.
eggnog_function
]:
...
...
backend/metagenedb/apps/catalog/admin/function.py
View file @
bef0add0
from
django.contrib
import
admin
from
django.contrib
import
admin
from
metagenedb.apps.catalog.models
import
EggN
og
,
EggN
og
FunctionalCategory
,
Function
,
KeggOrthology
from
metagenedb.apps.catalog.models
import
EggN
OGv5
,
EggN
OG
FunctionalCategory
,
Function
,
KeggOrthology
@
admin
.
register
(
KeggOrthology
)
@
admin
.
register
(
KeggOrthology
)
...
@@ -17,8 +17,8 @@ class FunctionAdmin(admin.ModelAdmin):
...
@@ -17,8 +17,8 @@ class FunctionAdmin(admin.ModelAdmin):
search_fields
=
(
'function_id'
,)
search_fields
=
(
'function_id'
,)
@
admin
.
register
(
EggN
og
)
@
admin
.
register
(
EggN
OGv5
)
class
EggN
og
Admin
(
admin
.
ModelAdmin
):
class
EggN
OGv5
Admin
(
admin
.
ModelAdmin
):
list_display
=
(
'function_id'
,
'name'
,
'get_functional_categories'
)
list_display
=
(
'function_id'
,
'name'
,
'get_functional_categories'
)
search_fields
=
(
'function_id'
,
'name'
)
search_fields
=
(
'function_id'
,
'name'
)
...
@@ -30,8 +30,8 @@ class EggNogAdmin(admin.ModelAdmin):
...
@@ -30,8 +30,8 @@ class EggNogAdmin(admin.ModelAdmin):
get_functional_categories
.
short_description
=
'Functional categories'
get_functional_categories
.
short_description
=
'Functional categories'
@
admin
.
register
(
EggN
og
FunctionalCategory
)
@
admin
.
register
(
EggN
OG
FunctionalCategory
)
class
EggN
og
FunctionalCategoryAdmin
(
admin
.
ModelAdmin
):
class
EggN
OG
FunctionalCategoryAdmin
(
admin
.
ModelAdmin
):
list_display
=
(
'category_id'
,
'name'
,
'group'
)
list_display
=
(
'category_id'
,
'name'
,
'group'
)
search_fields
=
(
'category_id'
,
'name'
)
search_fields
=
(
'category_id'
,
'name'
)
backend/metagenedb/apps/catalog/factory/__init__.py
View file @
bef0add0
from
.function
import
EggN
og
Factory
,
FunctionFactory
,
KeggOrthologyFactory
# noqa
from
.function
import
EggN
OGv5
Factory
,
FunctionFactory
,
KeggOrthologyFactory
# noqa
from
.gene
import
GeneFactory
# noqa
from
.gene
import
GeneFactory
# noqa
from
.taxonomy
import
TaxonomyFactory
# noqa
from
.taxonomy
import
TaxonomyFactory
# noqa
backend/metagenedb/apps/catalog/factory/function.py
View file @
bef0add0
...
@@ -22,9 +22,9 @@ class FunctionFactory(BaseFunctionFactory):
...
@@ -22,9 +22,9 @@ class FunctionFactory(BaseFunctionFactory):
function_id
=
FuzzyLowerText
(
prefix
=
'function-'
,
length
=
15
)
function_id
=
FuzzyLowerText
(
prefix
=
'function-'
,
length
=
15
)
class
EggN
og
Factory
(
BaseFunctionFactory
):
class
EggN
OGv5
Factory
(
BaseFunctionFactory
):
class
Meta
:
class
Meta
:
model
=
models
.
EggN
og
model
=
models
.
EggN
OGv5
class
KeggOrthologyFactory
(
BaseFunctionFactory
):
class
KeggOrthologyFactory
(
BaseFunctionFactory
):
...
...
backend/metagenedb/apps/catalog/management/commands/create_eggnog_functional_cat.py
View file @
bef0add0
...
@@ -3,7 +3,7 @@ import logging
...
@@ -3,7 +3,7 @@ import logging
from
django.core.management.base
import
BaseCommand
from
django.core.management.base
import
BaseCommand
from
django.core.exceptions
import
ValidationError
from
django.core.exceptions
import
ValidationError
from
metagenedb.apps.catalog.models
import
EggN
og
FunctionalCategory
from
metagenedb.apps.catalog.models
import
EggN
OG
FunctionalCategory
from
metagenedb.common.utils.parsers.eggnog
import
EggNOGFunctionalCategoriesParser
from
metagenedb.common.utils.parsers.eggnog
import
EggNOGFunctionalCategoriesParser
logging
.
basicConfig
(
format
=
'[%(asctime)s] %(levelname)s:%(name)s:%(message)s'
)
logging
.
basicConfig
(
format
=
'[%(asctime)s] %(levelname)s:%(name)s:%(message)s'
)
...
@@ -12,7 +12,7 @@ logger = logging.getLogger(__name__)
...
@@ -12,7 +12,7 @@ logger = logging.getLogger(__name__)
class
ImportEggNOGFunctionalCategories
(
object
):
class
ImportEggNOGFunctionalCategories
(
object
):
LOOKUP_FIELD
=
'category_id'
LOOKUP_FIELD
=
'category_id'
MODEL
=
EggN
og
FunctionalCategory
MODEL
=
EggN
OG
FunctionalCategory
GROUP_MAPPING
=
{
GROUP_MAPPING
=
{
'Information storage and processing'
:
'info_storage_processing'
,
'Information storage and processing'
:
'info_storage_processing'
,
'Cellular processes and signaling'
:
'cellular_processes_signaling'
,
'Cellular processes and signaling'
:
'cellular_processes_signaling'
,
...
...
backend/metagenedb/apps/catalog/management/commands/create_update_eggnog.py
View file @
bef0add0
...
@@ -3,7 +3,7 @@ import logging
...
@@ -3,7 +3,7 @@ import logging
from
django.core.management.base
import
BaseCommand
from
django.core.management.base
import
BaseCommand
from
django.core.exceptions
import
ValidationError
from
django.core.exceptions
import
ValidationError
from
metagenedb.apps.catalog.models
import
EggN
og
,
EggN
og
FunctionalCategory
from
metagenedb.apps.catalog.models
import
EggN
OGv5
,
EggN
OG
FunctionalCategory
from
metagenedb.common.utils.chunks
import
file_len
from
metagenedb.common.utils.chunks
import
file_len
from
metagenedb.common.utils.parsers
import
EggNOGAnnotationLineParser
from
metagenedb.common.utils.parsers
import
EggNOGAnnotationLineParser
...
@@ -24,7 +24,7 @@ class ImportEggNOG(object):
...
@@ -24,7 +24,7 @@ class ImportEggNOG(object):
self
.
skipped_errors
=
[]
self
.
skipped_errors
=
[]
def
_build_functional_category_dict
(
self
):
def
_build_functional_category_dict
(
self
):
all_categories
=
EggN
og
FunctionalCategory
.
objects
.
all
()
all_categories
=
EggN
OG
FunctionalCategory
.
objects
.
all
()
if
not
all_categories
:
if
not
all_categories
:
raise
Exception
(
"You need to create Functional categories first."
)
raise
Exception
(
"You need to create Functional categories first."
)
self
.
functional_cat_instances
=
{
cat
.
category_id
:
cat
for
cat
in
all_categories
}
self
.
functional_cat_instances
=
{
cat
.
category_id
:
cat
for
cat
in
all_categories
}
...
@@ -43,14 +43,14 @@ class ImportEggNOG(object):
...
@@ -43,14 +43,14 @@ class ImportEggNOG(object):
payload
=
{
k
:
v
for
k
,
v
in
eggnog_dict
.
items
()
if
v
!=
""
}
payload
=
{
k
:
v
for
k
,
v
in
eggnog_dict
.
items
()
if
v
!=
""
}
eggnog
=
None
eggnog
=
None
try
:
try
:
eggnog
=
EggN
og
(
**
payload
)
eggnog
=
EggN
OGv5
(
**
payload
)
eggnog
.
full_clean
()
eggnog
.
full_clean
()
eggnog
.
save
()
eggnog
.
save
()
self
.
created_count
+=
1
self
.
created_count
+=
1
except
ValidationError
as
validation_error
:
except
ValidationError
as
validation_error
:
if
'function_id'
in
validation_error
.
error_dict
.
keys
():
if
'function_id'
in
validation_error
.
error_dict
.
keys
():
try
:
try
:
eggnog
=
EggN
og
.
objects
.
get
(
function_id
=
payload
.
get
(
'function_id'
))
eggnog
=
EggN
OGv5
.
objects
.
get
(
function_id
=
payload
.
get
(
'function_id'
))
for
k
,
v
in
payload
.
items
():
for
k
,
v
in
payload
.
items
():
setattr
(
eggnog
,
k
,
v
)
setattr
(
eggnog
,
k
,
v
)
eggnog
.
full_clean
()
eggnog
.
full_clean
()
...
...
backend/metagenedb/apps/catalog/migrations/0016_rename_eggnog.py
0 → 100644
View file @
bef0add0
# 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'
),
),
]
backend/metagenedb/apps/catalog/models/__init__.py
View file @
bef0add0
from
.function
import
EggN
og
,
EggN
og
FunctionalCategory
,
Function
,
KeggOrthology
# noqa
from
.function
import
EggN
OGv5
,
EggN
OG
FunctionalCategory
,
Function
,
KeggOrthology
# noqa
from
.gene
import
Gene
,
GeneFunction
# noqa
from
.gene
import
Gene
,
GeneFunction
# noqa
from
.taxonomy
import
Taxonomy
# noqa
from
.taxonomy
import
Taxonomy
# noqa
backend/metagenedb/apps/catalog/models/function.py
View file @
bef0add0
...
@@ -36,7 +36,7 @@ class KeggOrthology(Function):
...
@@ -36,7 +36,7 @@ class KeggOrthology(Function):
verbose_name_plural
=
"KEGG orthologies"
verbose_name_plural
=
"KEGG orthologies"
class
EggN
og
FunctionalCategory
(
models
.
Model
):
class
EggN
OG
FunctionalCategory
(
models
.
Model
):
GROUP_CHOICES
=
[
GROUP_CHOICES
=
[
(
'info_storage_processing'
,
'Information Storage and Processing'
),
(
'info_storage_processing'
,
'Information Storage and Processing'
),
(
'cellular_processes_signaling'
,
'Cellular Processes and Signaling'
),
(
'cellular_processes_signaling'
,
'Cellular Processes and Signaling'
),
...
@@ -56,14 +56,14 @@ class EggNogFunctionalCategory(models.Model):
...
@@ -56,14 +56,14 @@ class EggNogFunctionalCategory(models.Model):
verbose_name_plural
=
"EggNOG functional categories"
verbose_name_plural
=
"EggNOG functional categories"
class
EggN
og
(
Function
):
class
EggN
OGv5
(
Function
):
SOURCE
=
'eggnog'
SOURCE
=
'eggnog'
functional_categories
=
models
.
ManyToManyField
(
EggN
og
FunctionalCategory
)
functional_categories
=
models
.
ManyToManyField
(
EggN
OG
FunctionalCategory
)
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
super
(
EggN
og
,
self
).
__init__
(
source
=
self
.
SOURCE
,
*
args
,
**
kwargs
)
super
(
EggN
OGv5
,
self
).
__init__
(
source
=
self
.
SOURCE
,
*
args
,
**
kwargs
)
class
Meta
:
class
Meta
:
verbose_name
=
"EggNOG"
verbose_name
=
"EggNOG
v5.0
"
verbose_name_plural
=
"EggNOGs"
verbose_name_plural
=
"EggNOGs
v5.0
"
backend/metagenedb/apps/catalog/serializers/__init__.py
View file @
bef0add0
from
.function
import
EggN
og
Serializer
,
FunctionSerializer
,
KeggOrthologySerializer
# noqa
from
.function
import
EggN
OG
Serializer
,
FunctionSerializer
,
KeggOrthologySerializer
# noqa
from
.gene
import
GeneSerializer
# noqa
from
.gene
import
GeneSerializer
# noqa
from
.taxonomy
import
TaxonomySerializer
# noqa
from
.taxonomy
import
TaxonomySerializer
# noqa
backend/metagenedb/apps/catalog/serializers/function.py
View file @
bef0add0
from
rest_framework
import
serializers
from
rest_framework
import
serializers
from
metagenedb.apps.catalog.models
import
EggN
og
,
Function
,
KeggOrthology
from
metagenedb.apps.catalog.models
import
EggN
OGv5
,
Function
,
KeggOrthology
from
.bulk_list
import
BulkListSerializer
from
.bulk_list
import
BulkListSerializer
...
@@ -18,17 +18,17 @@ class FunctionSerializer(serializers.ModelSerializer):
...
@@ -18,17 +18,17 @@ class FunctionSerializer(serializers.ModelSerializer):
fields
=
(
'function_id'
,
'source'
,
'name'
)
fields
=
(
'function_id'
,
'source'
,
'name'
)
class
EggN
og
ListSerializer
(
BulkListSerializer
):
class
EggN
OG
ListSerializer
(
BulkListSerializer
):
class
Meta
:
class
Meta
:
model
=
EggN
og
model
=
EggN
OGv5
class
EggN
og
Serializer
(
serializers
.
ModelSerializer
):
class
EggN
OG
Serializer
(
serializers
.
ModelSerializer
):
class
Meta
:
class
Meta
:
model
=
EggN
og
model
=
EggN
OGv5
list_serializer_class
=
EggN
og
ListSerializer
list_serializer_class
=
EggN
OG
ListSerializer
fields
=
(
'function_id'
,
'name'
,
'functional_categories'
)
fields
=
(
'function_id'
,
'name'
,
'functional_categories'
)
...
...
backend/metagenedb/common/utils/mocks/metagenedb.py
View file @
bef0add0
...
@@ -90,5 +90,5 @@ class MetageneDBCatalogKeggOrthologyAPIMock(MetageneDBCatalogFunctionAPIMock):
...
@@ -90,5 +90,5 @@ class MetageneDBCatalogKeggOrthologyAPIMock(MetageneDBCatalogFunctionAPIMock):
REVERSE_PATH
=
'catalog:v1:kegg-orthologies'
REVERSE_PATH
=
'catalog:v1:kegg-orthologies'
class
MetageneDBCatalogEggN
og
APIMock
(
MetageneDBCatalogFunctionAPIMock
):
class
MetageneDBCatalogEggN
OGv5
APIMock
(
MetageneDBCatalogFunctionAPIMock
):
REVERSE_PATH
=
'catalog:v1:eggnogs'
REVERSE_PATH
=
'catalog:v1:eggnogs'
backend/scripts/populate_db/test_import_igc_data.py
View file @
bef0add0
...
@@ -4,13 +4,13 @@ from rest_framework.test import APITestCase
...
@@ -4,13 +4,13 @@ from rest_framework.test import APITestCase
from
metagenedb.common.utils.mocks.metagenedb
import
(
from
metagenedb.common.utils.mocks.metagenedb
import
(
MetageneDBCatalogTaxonomyAPIMock
,
MetageneDBCatalogTaxonomyAPIMock
,
MetageneDBCatalogEggN
og
APIMock
,
MetageneDBCatalogEggN
OGv5
APIMock
,
MetageneDBCatalogKeggOrthologyAPIMock
MetageneDBCatalogKeggOrthologyAPIMock
)
)
from
metagenedb.apps.catalog.factory
import
(
from
metagenedb.apps.catalog.factory
import
(
TaxonomyFactory
,
TaxonomyFactory
,
KeggOrthologyFactory
,
KeggOrthologyFactory
,
EggN
og
Factory
EggN
OGv5
Factory
)
)
from
scripts.populate_db.import_igc_data
import
ImportIGCGenes
from
scripts.populate_db.import_igc_data
import
ImportIGCGenes
...
@@ -302,12 +302,12 @@ class TestBuildBuildFunctionCatalog(APITestCase):
...
@@ -302,12 +302,12 @@ class TestBuildBuildFunctionCatalog(APITestCase):
@
classmethod
@
classmethod
def
setUpTestData
(
cls
):
def
setUpTestData
(
cls
):
cls
.
keggs
=
KeggOrthologyFactory
.
create_batch
(
100
)
cls
.
keggs
=
KeggOrthologyFactory
.
create_batch
(
100
)
cls
.
eggnogs
=
EggN
og
Factory
.
create_batch
(
100
)
cls
.
eggnogs
=
EggN
OGv5
Factory
.
create_batch
(
100
)
def
setUp
(
self
):
def
setUp
(
self
):
self
.
import_igc_genes
=
ImportIGCGenes
(
'test'
,
'test_url'
,
'test_token'
)
self
.
import_igc_genes
=
ImportIGCGenes
(
'test'
,
'test_url'
,
'test_token'
)
self
.
kegg_api_mock
=
MetageneDBCatalogKeggOrthologyAPIMock
(
self
.
client
)
self
.
kegg_api_mock
=
MetageneDBCatalogKeggOrthologyAPIMock
(
self
.
client
)
self
.
eggnog_api_mock
=
MetageneDBCatalogEggN
og
APIMock
(
self
.
client
)
self
.
eggnog_api_mock
=
MetageneDBCatalogEggN
OGv5
APIMock
(
self
.
client
)
self
.
import_igc_genes
.
metagenedb_kegg_api
=
self
.
kegg_api_mock
self
.
import_igc_genes
.
metagenedb_kegg_api
=
self
.
kegg_api_mock
self
.
import_igc_genes
.
metagenedb_eggnog_api
=
self
.
eggnog_api_mock
self
.
import_igc_genes
.
metagenedb_eggnog_api
=
self
.
eggnog_api_mock
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment