move common code into server, update tests and makefile (#2425)

* move common code into server, update tests and makefile

remove backend directory, refactor

update smoke tests
This commit is contained in:
Madison Dunitz
2021-09-20 18:50:06 -07:00
committed by GitHub
parent 97caa5bcaa
commit 3ebbb0ccbf
217 changed files with 277 additions and 292 deletions

View File

@@ -2,13 +2,13 @@
current_version = 0.18.0
commit = True
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(?:-(?P<prerel>rc)\.(?P<prerelversion>\d+))?
serialize =
serialize =
{major}.{minor}.{patch}-{prerel}.{prerelversion}
{major}.{minor}.{patch}
[bumpversion:part:prerel]
optional_value = release
values =
values =
rc
release
@@ -20,6 +20,6 @@ replace = version="{new_version}"
search = "version": "{current_version}"
replace = "version": "{new_version}"
[bumpversion:file:backend/server/__init__.py]
[bumpversion:file:server/__init__.py]
search = __version__ = "{current_version}"
replace = __version__ = "{new_version}"

View File

@@ -2,4 +2,4 @@ bin
client
dist
docs
backend
server

View File

@@ -41,8 +41,8 @@ jobs:
run: |
# 1. only install the dev requirements on top of what is in the cellxgene pip package
sudo apt-get update && sudo apt-get install -y libhdf5-serial-dev
sed -i 's/-r requirements.txt//' backend/server/requirements-dev.txt
pip install -r backend/server/requirements-dev.txt
sed -i 's/-r requirements.txt//' server/requirements-dev.txt
pip install -r server/requirements-dev.txt
# 2. install cellxgene
make pydist install-dist
# 3. install anndata
@@ -71,8 +71,8 @@ jobs:
cd cellxgene
# 1. only install the dev requirements on top of what is in the cellxgene pip package
make dev-env-client
sed -i 's/-r requirements.txt//' backend/server/requirements-dev.txt
pip install -r backend/server/requirements-dev.txt
sed -i 's/-r requirements.txt//' server/requirements-dev.txt
pip install -r server/requirements-dev.txt
# 2. install cellxgene
pip install --upgrade cellxgene
# 3. install anndata
@@ -99,7 +99,7 @@ jobs:
- name: Install dependencies
run: |
cd cellxgene
sed -i -E 's/^anndata[>=]=[0-9]+.[0-9]+.[0-9]+$/anndata/g' backend/server/requirements.txt
sed -i -E 's/^anndata[>=]=[0-9]+.[0-9]+.[0-9]+$/anndata/g' server/requirements.txt
make pydist install-dist dev-env
pip install git+https://github.com/theislab/anndata
- name: Tests

View File

@@ -69,7 +69,7 @@ jobs:
- name: Unit tests
run: |
make unit-test-server unit-test-client
bash <(curl -s https://codecov.io/bash) -y .codecov.yml -k backend/server -cF backend,python,unitTest
bash <(curl -s https://codecov.io/bash) -y .codecov.yml -k server -cF server,python,unitTest
cd client && ./node_modules/codecov/bin/codecov --yml=../.codecov.yml --root=../ --gcov-root=../ -C -F frontend,javascript,unitTest
smoke-tests:

6
.gitignore vendored
View File

@@ -19,9 +19,9 @@ venv*/
cellxgene/
# client build
backend/server/common/web/static/*
backend/server/common/web/templates/
backend/server/common/web/csp-hashes.json
server/common/web/static/*
server/common/web/templates/
server/common/web/csp-hashes.json
# eb build
artifact.dir

View File

@@ -1,7 +1,7 @@
recursive-include backend/server/common/web/templates *
recursive-include backend/server/common/web/static *
recursive-include server/common/web/templates *
recursive-include server/common/web/static *
include backend/server/requirements.txt
include backend/server/requirements-prepare.txt
include backend/server/converters/schema/hgnc_complete_set.txt.gz
include backend/server/converters/schema/schema_definitions/*
include server/requirements.txt
include server/requirements-prepare.txt
include server/converters/schema/hgnc_complete_set.txt.gz
include server/converters/schema/schema_definitions/*

View File

@@ -2,7 +2,7 @@ include common.mk
BUILDDIR := build
CLIENTBUILD := $(BUILDDIR)/client
SERVERBUILD := $(BUILDDIR)/backend/server
SERVERBUILD := $(BUILDDIR)/server
CLEANFILES := $(BUILDDIR)/ client/build build dist cellxgene.egg-info
PART ?= patch
@@ -22,7 +22,7 @@ clean-client:
.PHONY: clean-server
clean-server:
cd backend/server && $(MAKE) clean
cd server && $(MAKE) clean
# BUILDING PACKAGE
@@ -33,33 +33,26 @@ build-client:
.PHONY: build
build: clean build-client
git ls-files backend/server/ | grep -v 'backend/server/test/' | cpio -pdm $(BUILDDIR)
git ls-files server/ | cpio -pdm $(BUILDDIR)
cp -r client/build/ $(CLIENTBUILD)
$(call copy_client_assets,$(CLIENTBUILD),$(SERVERBUILD))
cp backend/__init__.py $(BUILDDIR)
cp backend/__init__.py $(BUILDDIR)/backend
cp -r backend/common $(BUILDDIR)/backend/common
cp MANIFEST.in README.md setup.cfg setup.py $(BUILDDIR)
# If you are actively developing in the server folder use this, dirties the source tree
.PHONY: build-for-server-dev
build-for-server-dev: clean-server build-client
$(call copy_client_assets,client/build,backend/server)
build-for-server-dev: clean-server build-client copy-client-assets
.PHONY: copy-client-assets
copy-client-assets:
$(call copy_client_assets,client/build,backend/server)
$(call copy_client_assets,client/build,server)
.PHONY: copy-client-assets-czi-hosted
copy-client-assets-czi-hosted:
$(call copy_client_assets,client/build)
# TESTING
.PHONY: test
test: unit-test smoke-test
.PHONY: unit-test
unit-test: unit-test-server unit-test-client unit-test-common
unit-test: unit-test-server unit-test-client
.PHONY: test-server
test-server: unit-test-server smoke-test
@@ -70,11 +63,13 @@ unit-test-client:
.PHONY: unit-test-server
unit-test-server:
cd backend/server && $(MAKE) unit-test
.PHONY: unit-test-common
unit-test-common:
cd backend/common && $(MAKE) unit-test
PYTHONWARNINGS=ignore:ResourceWarning coverage run \
--source=server \
--omit=.coverage,venv \
-m unittest discover \
--start-directory test/unit \
--verbose; test_result=$$?; \
exit $$test_result \
.PHONY: smoke-test
smoke-test:
@@ -103,7 +98,7 @@ lint: lint-server lint-client
.PHONY: lint-server
lint-server: fmt-py
flake8 backend/server --per-file-ignores='backend/test/fixtures/dataset_config_outline.py:F821 backend/test/fixtures/server_config_outline.py:F821 backend/server/test/performance/scale_test_annotations.py:E501'
flake8 server --per-file-ignores='test/fixtures/dataset_config_outline.py:F821 test/fixtures/server_config_outline.py:F821 test/performance/scale_test_annotations.py:E501'
.PHONY: lint-client
lint-client:
@@ -163,7 +158,7 @@ dev-env-client:
.PHONY: dev-env-server
dev-env-server:
pip install -r backend/server/requirements-dev.txt
pip install -r server/requirements-dev.txt
# Increments the release candidate version (i.e. 0.16.2-rc.1 -> 0.16.2-rc.2)
.PHONY: bump-release-candidate

View File

@@ -1,11 +0,0 @@
.PHONY: unit-test
unit-test:
PYTHONWARNINGS=ignore:ResourceWarning coverage run \
--source=fbs,utils \
--omit=.coverage,data_common/fbs/NetEncoding,venv \
-m unittest discover \
--start-directory ../test/test_common/unit \
--top-level-directory ../../ \
--verbose; test_result=$$?; \
exit $$test_result \

View File

@@ -1,22 +0,0 @@
include ../../common.mk
.PHONY: clean
clean:
rm -f common/web/templates/index.html
rm -rf common/web/static
rm -f common/web/csp-hashes.json
.PHONY: unit-test
unit-test:
PYTHONWARNINGS=ignore:ResourceWarning coverage run \
--source=app,cli,common,compute,converters,data_anndata,data_common \
--omit=.coverage,venv \
-m unittest discover \
--start-directory ../test/test_server/unit \
--top-level-directory ../../ \
--verbose; test_result=$$?; \
exit $$test_result \
.PHONY: test-annotations-performance
test-annotations-performance:
python ../test/test_server/performance/performance_test_annotations_backend.py

View File

@@ -1 +0,0 @@

View File

@@ -1,7 +1,7 @@
include ../common.mk
ANNOTATIONS := $(if $(ANNOTATIONS),$(ANNOTATIONS),../backend/test/fixtures/pbmc3k-annotations.csv)
GENE_SETS := $(if $(GENE_SETS),$(GENE_SETS),../backend/test/fixtures/pbmc3k-genesets.csv)
ANNOTATIONS := $(if $(ANNOTATIONS),$(ANNOTATIONS),../test/fixtures/pbmc3k-annotations.csv)
GENE_SETS := $(if $(GENE_SETS),$(GENE_SETS),../test/fixtures/pbmc3k-genesets.csv)
ANNOTATIONS_FILENAME := $(shell basename $(ANNOTATIONS))
GENE_SETS_FILENAME := $(shell basename $(GENE_SETS))

View File

@@ -17,7 +17,7 @@ exclude = '''
| buck-out
| build
| dist
| backend/server/data_common/fbs/NetEncoding
| server/common/fbs/NetEncoding
)/
)

View File

@@ -1 +1 @@
-r ./backend/server/requirements.txt
-r ./server/requirements.txt

12
server/Makefile Normal file
View File

@@ -0,0 +1,12 @@
include ../common.mk
.PHONY: clean
clean:
rm -f common/web/templates/index.html
rm -rf common/web/static
rm -f common/web/csp-hashes.json
.PHONY: test-annotations-performance
test-annotations-performance:
python ../test/performance/performance_test_annotations.py

View File

@@ -1,12 +1,12 @@
import logging
import sys
from backend.common.utils.utils import import_plugins
from server.common.utils.utils import import_plugins
__version__ = "0.18.0"
display_version = "cellxgene v" + __version__
try:
import_plugins("backend.server.plugins")
import_plugins("server.plugins")
except Exception as e:
# Make sure to exit in this case, as the server may not be configured as expected.
logging.critical(f"Error in import_plugins: {str(e)}")

View File

@@ -5,7 +5,8 @@ if __package__ is None:
PKG_PATH = Path(__file__).parent
sys.path.insert(0, str(PKG_PATH.parent))
import backend.server # noqa F401
import server # noqa F401
__package__ = PKG_PATH.name
# Main thing

View File

@@ -13,12 +13,12 @@ from flask import (
)
from flask_restful import Api, Resource
import backend.server.common.rest as common_rest
from backend.common.errors import DatasetAccessError, RequestException
from backend.server.common.health import health_check
from backend.common.utils.utils import StrictJSONEncoder
import server.common.rest as common_rest
from server.common.errors import DatasetAccessError, RequestException
from server.common.health import health_check
from server.common.utils.utils import StrictJSONEncoder
webbp = Blueprint("webapp", "backend.server.common.web", template_folder="templates")
webbp = Blueprint("webapp", "server.common.web", template_folder="templates")
ONE_WEEK = 7 * 24 * 60 * 60

View File

@@ -20,7 +20,10 @@ from .. import __version__
help="Show the software version and exit.",
)
@click.option(
"--upgrade-check/--no-upgrade-check", default=True, show_default=True, help="Check for release upgrades on start.",
"--upgrade-check/--no-upgrade-check",
default=True,
show_default=True,
help="Check for release upgrades on start.",
)
def cli(upgrade_check):
if upgrade_check:

View File

@@ -8,11 +8,11 @@ import click
from flask_compress import Compress
from flask_cors import CORS
from backend.server.default_config import default_config
from backend.server.app.app import Server
from backend.server.common.config.app_config import AppConfig
from backend.common.errors import DatasetAccessError, ConfigurationError
from backend.common.utils.utils import sort_options
from server.default_config import default_config
from server.app.app import Server
from server.common.config.app_config import AppConfig
from server.common.errors import DatasetAccessError, ConfigurationError
from server.common.utils.utils import sort_options
DEFAULT_CONFIG = AppConfig()

View File

@@ -5,7 +5,7 @@ import pandas as pd
from numpy import ndarray, unique
from scipy.sparse.csc import csc_matrix
from backend.common.utils.utils import sort_options
from server.common.utils.utils import sort_options
@sort_options
@@ -24,7 +24,11 @@ from backend.common.utils.utils import sort_options
show_default=True,
)
@click.option(
"--recipe", "-r", default="none", type=click.Choice(["none", "seurat", "zheng17"]), show_default=True,
"--recipe",
"-r",
default="none",
type=click.Choice(["none", "seurat", "zheng17"]),
show_default=True,
)
@click.option("--output", "-o", default="", help="Save a new file to filename.", metavar="<filename>")
@click.option("--plotting", "-p", default=False, is_flag=True, help="Generate plots.", show_default=True)

View File

@@ -1,8 +1,8 @@
from abc import ABCMeta, abstractmethod
from backend.common.errors import DisabledFeatureError
from backend.common.utils.type_conversion_utils import get_schema_type_hint_of_array
from backend.common.genesets import write_gene_sets_tidycsv
from server.common.errors import DisabledFeatureError
from server.common.utils.type_conversion_utils import get_schema_type_hint_of_array
from server.common.genesets import write_gene_sets_tidycsv
class Annotations(metaclass=ABCMeta):

View File

@@ -8,12 +8,12 @@ from hashlib import blake2b
import pandas as pd
from flask import session
from backend.server import __version__ as cellxgene_version
from backend.server.app.session import get_user_id
from backend.server.common.annotations.annotations import Annotations
from backend.common.genesets import read_gene_sets_tidycsv
from backend.common.errors import AnnotationsError, ObsoleteRequest
from backend.common.utils.data_locator import DataLocator
from server import __version__ as cellxgene_version
from server.app.session import get_user_id
from server.common.annotations.annotations import Annotations
from server.common.genesets import read_gene_sets_tidycsv
from server.common.errors import AnnotationsError, ObsoleteRequest
from server.common.utils.data_locator import DataLocator
class AnnotationsLocalFile(Annotations):

View File

@@ -1,6 +1,6 @@
import re
from backend.common.errors import ColorFormatException
from server.common.errors import ColorFormatException
HEX_COLOR_FORMAT = re.compile("^#[a-fA-F0-9]{6,6}$")

View File

@@ -1,6 +1,6 @@
import numpy as np
from scipy import sparse, stats
from backend.common.constants import XApproximateDistribution
from server.common.constants import XApproximateDistribution
def diffexp_ttest(adaptor, maskA, maskB, top_n=8, diffexp_lfc_cutoff=0.01):
@@ -27,7 +27,8 @@ def diffexp_ttest(adaptor, maskA, maskB, top_n=8, diffexp_lfc_cutoff=0.01):
:param top_n: number of variables to return stats for
:param diffexp_lfc_cutoff: minimum
absolute value returning [ varindex, logfoldchange, pval, pval_adj ] for top N genes
:return: for top N genes, {"positive": for top N genes, [ varindex, foldchange, pval, pval_adj ], "negative": for top N genes, [ varindex, foldchange, pval, pval_adj ]}
:return: for top N genes, {"positive": for top N genes, [ varindex, foldchange, pval, pval_adj ],
"negative": for top N genes, [ varindex, foldchange, pval, pval_adj ]}
"""
X_approximate_distribution = adaptor.get_X_approximate_distribution()

View File

@@ -3,7 +3,7 @@ import numba
import concurrent.futures
import numpy as np
from scipy import sparse
from backend.common.constants import XApproximateDistribution
from server.common.constants import XApproximateDistribution
@numba.njit(error_model="numpy", nogil=True)

View File

@@ -1,11 +1,11 @@
import yaml
from flatten_dict import unflatten
from backend.server.default_config import get_default_config
from backend.server.common.config.dataset_config import DatasetConfig
from backend.server.common.config.server_config import ServerConfig
from backend.server.common.config.external_config import ExternalConfig
from backend.common.errors import ConfigurationError
from server.default_config import get_default_config
from server.common.config.dataset_config import DatasetConfig
from server.common.config.server_config import ServerConfig
from server.common.config.external_config import ExternalConfig
from server.common.errors import ConfigurationError
class AppConfig(object):

View File

@@ -1,7 +1,7 @@
import copy
from flatten_dict import flatten
from backend.common.errors import ConfigurationError
from server.common.errors import ConfigurationError
class BaseConfig(object):

View File

@@ -1,4 +1,4 @@
from backend.server import display_version as cellxgene_display_version
from server import display_version as cellxgene_display_version
def get_client_config(app_config, data_adaptor):

View File

@@ -1,10 +1,10 @@
import os
from os.path import splitext, isdir
from backend.server.common.annotations.local_file_csv import AnnotationsLocalFile
from backend.server.common.config.base_config import BaseConfig
from backend.common.errors import ConfigurationError, AnnotationsError
from backend.server.data_common.matrix_loader import MatrixDataLoader
from server.common.annotations.local_file_csv import AnnotationsLocalFile
from server.common.config.base_config import BaseConfig
from server.common.errors import ConfigurationError, AnnotationsError
from server.data_common.matrix_loader import MatrixDataLoader
class DatasetConfig(BaseConfig):

View File

@@ -1,8 +1,8 @@
import os
from backend.server.common.config.base_config import BaseConfig
from backend.common.errors import ConfigurationError
from backend.common.utils.type_conversion_utils import convert_string_to_value
from server.common.config.base_config import BaseConfig
from server.common.errors import ConfigurationError
from server.common.utils.type_conversion_utils import convert_string_to_value
class ExternalConfig(BaseConfig):

View File

@@ -4,12 +4,12 @@ import warnings
from os.path import basename
from urllib.parse import urlparse
from backend.server.common.config.base_config import BaseConfig
from backend.server.common.config import DEFAULT_SERVER_PORT, BIG_FILE_SIZE_THRESHOLD
from backend.common.utils.data_locator import discover_s3_region_name
from backend.common.errors import ConfigurationError, DatasetAccessError
from backend.common.utils.utils import is_port_available, find_available_port, custom_format_warning
from backend.server.data_common.matrix_loader import MatrixDataLoader
from server.common.config.base_config import BaseConfig
from server.common.config import DEFAULT_SERVER_PORT, BIG_FILE_SIZE_THRESHOLD
from server.common.utils.data_locator import discover_s3_region_name
from server.common.errors import ConfigurationError, DatasetAccessError
from server.common.utils.utils import is_port_available, find_available_port, custom_format_warning
from server.data_common.matrix_loader import MatrixDataLoader
class ServerConfig(BaseConfig):

View File

@@ -8,8 +8,8 @@ https://github.com/chanzuckerberg/corpora-data-portal/blob/main/backend/schema/c
import collections
import json
from backend.server.cli.upgrade import validate_version_str
from backend.server.common.utils.corpora_constants import CorporaConstants
from server.cli.upgrade import validate_version_str
from server.common.utils.corpora_constants import CorporaConstants
def corpora_get_versions_from_anndata(adata):

View File

@@ -5,16 +5,16 @@ import pandas as pd
from flatbuffers import Builder
from scipy import sparse
from backend.common.utils.type_conversion_utils import get_encoding_dtype_of_array
from server.common.utils.type_conversion_utils import get_encoding_dtype_of_array
import backend.common.fbs.NetEncoding.Column as Column
import backend.common.fbs.NetEncoding.Float32Array as Float32Array
import backend.common.fbs.NetEncoding.Float64Array as Float64Array
import backend.common.fbs.NetEncoding.Int32Array as Int32Array
import backend.common.fbs.NetEncoding.JSONEncodedArray as JSONEncodedArray
import backend.common.fbs.NetEncoding.Matrix as Matrix
import backend.common.fbs.NetEncoding.TypedArray as TypedArray
import backend.common.fbs.NetEncoding.Uint32Array as Uint32Array
import server.common.fbs.NetEncoding.Column as Column
import server.common.fbs.NetEncoding.Float32Array as Float32Array
import server.common.fbs.NetEncoding.Float64Array as Float64Array
import server.common.fbs.NetEncoding.Int32Array as Int32Array
import server.common.fbs.NetEncoding.JSONEncodedArray as JSONEncodedArray
import server.common.fbs.NetEncoding.Matrix as Matrix
import server.common.fbs.NetEncoding.TypedArray as TypedArray
import server.common.fbs.NetEncoding.Uint32Array as Uint32Array
# Serialization helper

View File

@@ -75,7 +75,7 @@ def read_gene_sets_tidycsv(gs_locator, context=None):
# if this is the first non-comment row, assume it is a header and validate
# column names. OK if the user has extra columns after our initial set.
if not haveReadHeader:
if row[0:len(GENESETS_TIDYCSV_HEADER)] != GENESETS_TIDYCSV_HEADER:
if row[0 : len(GENESETS_TIDYCSV_HEADER)] != GENESETS_TIDYCSV_HEADER:
raise AnnotationsError("Gene set CSV file missing the required column header.")
haveReadHeader = True
continue

View File

@@ -1,8 +1,8 @@
from http import HTTPStatus
from flask import make_response, jsonify
from backend.server import __version__ as cellxgene_version
from backend.common.utils.data_locator import DataLocator
from server import __version__ as cellxgene_version
from server.common.utils.data_locator import DataLocator
def _is_accessible(path, config):

View File

@@ -8,9 +8,9 @@ import json
from flask import make_response, jsonify, current_app, abort
from werkzeug.urls import url_unquote
from backend.server.common.config.client_config import get_client_config
from backend.common.constants import Axis, DiffExpMode, JSON_NaN_to_num_warning_msg
from backend.common.errors import (
from server.common.config.client_config import get_client_config
from server.common.constants import Axis, DiffExpMode, JSON_NaN_to_num_warning_msg
from server.common.errors import (
FilterError,
JSONEncodingValueError,
PrepareError,
@@ -22,8 +22,8 @@ from backend.common.errors import (
ObsoleteRequest,
UnsupportedSummaryMethod,
)
from backend.common.genesets import summarizeQueryHash
from backend.common.fbs.matrix import decode_matrix_fbs
from server.common.genesets import summarizeQueryHash
from server.common.fbs.matrix import decode_matrix_fbs
def abort_and_log(code, logmsg, loglevel=logging.DEBUG, include_exc_info=False):

View File

@@ -10,7 +10,7 @@ from urllib.parse import urlsplit, urljoin
import numpy as np
from flask import json
from backend.common.errors import ConfigurationError
from server.common.errors import ConfigurationError
def find_available_port(host, port=5005):

View File

@@ -6,15 +6,15 @@ from packaging import version
from pandas.core.dtypes.dtypes import CategoricalDtype
from scipy import sparse
import backend.common.compute.diffexp_generic as diffexp_generic
import backend.common.compute.estimate_distribution as estimate_distribution
from backend.common.colors import convert_anndata_category_colors_to_cxg_category_colors
from backend.common.constants import Axis, MAX_LAYOUTS, XApproximateDistribution
from backend.server.common.corpora import corpora_get_props_from_anndata
from backend.common.errors import PrepareError, DatasetAccessError
from backend.common.utils.type_conversion_utils import get_schema_type_hint_of_array
from backend.server.data_common.data_adaptor import DataAdaptor
from backend.common.fbs.matrix import encode_matrix_fbs
import server.common.compute.diffexp_generic as diffexp_generic
import server.common.compute.estimate_distribution as estimate_distribution
from server.common.colors import convert_anndata_category_colors_to_cxg_category_colors
from server.common.constants import Axis, MAX_LAYOUTS, XApproximateDistribution
from server.common.corpora import corpora_get_props_from_anndata
from server.common.errors import PrepareError, DatasetAccessError
from server.common.utils.type_conversion_utils import get_schema_type_hint_of_array
from server.data_common.data_adaptor import DataAdaptor
from server.common.fbs.matrix import encode_matrix_fbs
anndata_version = version.parse(str(anndata.__version__)).release

View File

@@ -5,12 +5,12 @@ import pandas as pd
from scipy import sparse
from server_timing import Timing as ServerTiming
from backend.server.common.config.app_config import AppConfig
from backend.common.constants import Axis, XApproximateDistribution
from backend.common.errors import FilterError, JSONEncodingValueError, ExceedsLimitError, UnsupportedSummaryMethod
from backend.common.utils.utils import jsonify_strict
from backend.common.fbs.matrix import encode_matrix_fbs
from backend.common.genesets import validate_gene_sets
from server.common.config.app_config import AppConfig
from server.common.constants import Axis, XApproximateDistribution
from server.common.errors import FilterError, JSONEncodingValueError, ExceedsLimitError, UnsupportedSummaryMethod
from server.common.utils.utils import jsonify_strict
from server.common.fbs.matrix import encode_matrix_fbs
from server.common.genesets import validate_gene_sets
class DataAdaptor(metaclass=ABCMeta):

View File

@@ -1,7 +1,7 @@
from enum import Enum
from backend.common.utils.data_locator import DataLocator
from backend.common.errors import DatasetAccessError
from server.common.utils.data_locator import DataLocator
from server.common.errors import DatasetAccessError
from http import HTTPStatus
@@ -30,7 +30,7 @@ class MatrixDataLoader(object):
raise DatasetAccessError("Dataset does not have an allowed type.")
if self.matrix_data_type == MatrixDataType.H5AD:
from backend.server.data_anndata.anndata_adaptor import AnndataAdaptor
from server.data_anndata.anndata_adaptor import AnndataAdaptor
self.matrix_type = AnndataAdaptor

View File

@@ -1,4 +1,4 @@
[flake8]
max-line-length = 120
ignore = E203, W503
exclude = backend/common/fbs/NetEncoding/,.git,__pycache__,venv,old,build,dist
exclude = server/common/fbs/NetEncoding/,.git,__pycache__,venv,old,build,dist

View File

@@ -3,10 +3,10 @@ from setuptools import setup, find_packages
with open("README.md", "rb") as fh:
long_description = fh.read().decode()
with open("backend/server/requirements.txt") as fh:
with open("server/requirements.txt") as fh:
requirements = fh.read().splitlines()
with open("backend/server/requirements-prepare.txt") as fh:
with open("server/requirements-prepare.txt") as fh:
requirements_prepare = fh.read().splitlines()
setup(
@@ -39,6 +39,6 @@ setup(
"Programming Language :: Python :: 3 :: Only",
"Topic :: Scientific/Engineering :: Bio-Informatics",
],
entry_points={"console_scripts": ["cellxgene = backend.server.cli.cli:cli"]},
entry_points={"console_scripts": ["cellxgene = server.cli.cli:cli"]},
extras_require=dict(prepare=requirements_prepare),
)

View File

@@ -3,7 +3,7 @@ import string
from os import popen
PROJECT_ROOT = popen("git rev-parse --show-toplevel").read().strip()
FIXTURES_ROOT = PROJECT_ROOT + "/backend/test/fixtures"
FIXTURES_ROOT = PROJECT_ROOT + "/test/fixtures"
H5AD_FIXTURE = FIXTURES_ROOT + "/pbmc3k-CSC-gz.h5ad"

View File

@@ -5,8 +5,8 @@ This code will need to be updated if fbs/matrix.fbs changes. For more informatio
server/data_common/fbs/
"""
import backend.common.fbs.NetEncoding.Matrix as Matrix
from backend.common.fbs.matrix import deserialize_typed_array
import server.common.fbs.NetEncoding.Matrix as Matrix
from server.common.fbs.matrix import deserialize_typed_array
def decode_matrix_FBS(buf):

Some files were not shown because too many files have changed in this diff Show More