Running tests in temporary directory: '/tmp/viash_test_knn3040281659111793377'
====================================================================
+/tmp/viash_test_knn3040281659111793377/build_executable/knn ---verbosity 6 ---setup cachedbuild
[notice] Building container 'ghcr.io/openproblems-bio/label_projection/methods/knn:test' with Dockerfile
[info] Running 'docker build -t ghcr.io/openproblems-bio/label_projection/methods/knn:test /tmp/viash_test_knn3040281659111793377/build_executable -f /tmp/viash_test_knn3040281659111793377/build_executable/tmp/dockerbuild-knn-z7WbaV/Dockerfile'
#0 building with "default" instance using docker driver
#1 [internal] load .dockerignore
#1 transferring context: 2B done
#1 DONE 0.0s
#2 [internal] load build definition from Dockerfile
#2 transferring dockerfile: 590B done
#2 DONE 0.0s
#3 [internal] load metadata for ghcr.io/openproblems-bio/base_python:1.0.1
#3 DONE 0.2s
#4 [1/2] FROM ghcr.io/openproblems-bio/base_python:1.0.1@sha256:54ab73ef47dee4b0ba32bcacab08b760351d118943e4b30d7476f9a85072303d
#4 CACHED
#5 [2/2] RUN pip install --upgrade pip && pip install --upgrade --no-cache-dir "scikit-learn" "jsonschema"
#5 0.592 Requirement already satisfied: pip in /usr/local/lib/python3.10/site-packages (23.2.1)
#5 1.219 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
#5 1.837 Requirement already satisfied: scikit-learn in /usr/local/lib/python3.10/site-packages (1.3.0)
#5 2.091 Requirement already satisfied: jsonschema in /usr/local/lib/python3.10/site-packages (4.19.0)
#5 2.173 Requirement already satisfied: numpy>=1.17.3 in /usr/local/lib/python3.10/site-packages (from scikit-learn) (1.24.4)
#5 2.175 Requirement already satisfied: scipy>=1.5.0 in /usr/local/lib/python3.10/site-packages (from scikit-learn) (1.11.2)
#5 2.175 Requirement already satisfied: joblib>=1.1.1 in /usr/local/lib/python3.10/site-packages (from scikit-learn) (1.3.2)
#5 2.176 Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.10/site-packages (from scikit-learn) (3.2.0)
#5 2.194 Requirement already satisfied: attrs>=22.2.0 in /usr/local/lib/python3.10/site-packages (from jsonschema) (23.1.0)
#5 2.195 Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /usr/local/lib/python3.10/site-packages (from jsonschema) (2023.7.1)
#5 2.196 Requirement already satisfied: referencing>=0.28.4 in /usr/local/lib/python3.10/site-packages (from jsonschema) (0.30.2)
#5 2.197 Requirement already satisfied: rpds-py>=0.7.1 in /usr/local/lib/python3.10/site-packages (from jsonschema) (0.10.0)
#5 2.627 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
#5 DONE 2.9s
#6 exporting to image
#6 exporting layers
#6 exporting layers 1.6s done
#6 writing image sha256:f729ae3d71c1183b9dda1c9cab1d8121cb2242f668729f2008c315ace4c3e65b done
#6 naming to ghcr.io/openproblems-bio/label_projection/methods/knn:test done
#6 DONE 1.7s
====================================================================
+/tmp/viash_test_knn3040281659111793377/test_check_method_config/test_executable
Load config data
Check general fields
Check info fields
All checks succeeded!
====================================================================
+/tmp/viash_test_knn3040281659111793377/test_run_and_check_adata/test_executable
>> Checking whether input files exist
>> Running script as test
Load input data
Fit to train data
Predict on test data
Write output to file
>> Checking whether output file exists
>> Reading h5ad files and checking formats
Reading and checking input_train
AnnData object with n_obs × n_vars = 400 × 500
obs: 'label', 'batch'
var: 'hvg', 'hvg_score'
uns: 'dataset_id', 'normalization_id'
obsm: 'X_pca'
layers: 'counts', 'normalized'
Reading and checking input_test
AnnData object with n_obs × n_vars = 100 × 500
obs: 'batch'
var: 'hvg', 'hvg_score'
uns: 'dataset_id', 'normalization_id'
obsm: 'X_pca'
layers: 'counts', 'normalized'
Reading and checking output
AnnData object with n_obs × n_vars = 100 × 500
obs: 'batch', 'label_pred'
var: 'hvg', 'hvg_score'
uns: 'dataset_id', 'method_id', 'normalization_id'
obsm: 'X_pca'
layers: 'counts', 'normalized'
All checks succeeded!
====================================================================
[32mSUCCESS! All 2 out of 2 test scripts succeeded![0m
Cleaning up temporary directory
Run tests
A component in OpenProblems will typically come with at least two unit tests out of the box:
- The first test will check if the config file has all the required fields.
- The second test will generally test if your component works and if the output has the expected dimensions and fields.
Use viash test
to run all of the component’s unit tests.
Example
viash test src/tasks/label_projection/methods/knn/config.vsh.yaml
Output
Test multiple components
Use viash ns test
to unit test all of the components of a given task.
viash ns test --query label_projection --parallel --platform docker
Output
namespace functionality platform test_name exit_code duration result
label_projection/methods logistic_regression docker start
label_projection/methods scanvi docker start
label_projection/methods knn docker start
label_projection/methods mlp docker start
label_projection/metrics accuracy docker start
label_projection/metrics f1 docker start
label_projection/methods logistic_regression docker build_executable 0 4 SUCCESS
label_projection/methods logistic_regression docker generic_test.py 0 9 SUCCESS
label_projection/metrics f1 docker build_executable 0 7 SUCCESS
label_projection/metrics f1 docker format_check.py 0 8 SUCCESS
label_projection/metrics accuracy docker build_executable 0 8 SUCCESS
label_projection/metrics accuracy docker format_check.py 0 7 SUCCESS
...
Common errors
Below is a listing of common errors and how to solve them. If you come across any other problems, please take a look at our troubleshooting page, or reach out via GitHub issues.
Assertion error
An assertion error typically occurs when data format of input or output parameters is incorrect.
Component script errors:
Output file cannot be found: Check that your script writes to the correct output filename.
Some fields/objects cannot be found in the output file: Check whether the correct fields are written in the output file.
+/tmp/viash_test_knn12471306149427017048/test_generic_test/test_executable
>> Running script as test
>> Checking whether output file exists
>> Reading h5ad files
>> Checking whether predictions were added
Traceback (most recent call last):
File "/viash_automount/tmp/viash_test_knn12471306149427017048/test_generic_test/tmp//viash-run-knn-QTKmUM.py", line 57, in <module>
assert "label_predi" in output.obs
AssertionError
Component config errors:
When these AssertionErrors
occur, check the spelling of the missing value if it is present in the file. If the field is irrelevant you can simply add an empty string ""
to make sure it is included in the composed config file.
+/tmp/viash_test_knn12945373156205296243/test_check_method_config/test_executable
Load config data
check general fields
Traceback (most recent call last):
Check info fields
File "/viash_automount/tmp/viash_test_knn12945373156205296243/test_check_method_config/tmp//viash-run-knn-Xn2Vd7.py", line 42, in <module>
assert "summary" in info is not None, "summary not an info field or is empty"
AssertionError: summary not an info field or is empty
Python / R dependency does not exist
When a dependency for the unit test or the executed script is not added to the setup of the docker you will get a ModuleNotFoundError
. Add the dependency to the setup.
ModuleNotFoundError: No module named 'yaml'
Docker image not found
When this kind of error occurs make sure there are no spelling mistakes in the image name.
#3 ERROR: docker.io/library/python:3.1: not found
------
> [internal] load metadata for docker.io/library/python:3.1:
------
Dockerfile:1
--------------------
1 | >>> FROM python:3.1
2 |
3 | RUN pip install --upgrade pip && \
--------------------
ERROR: failed to solve: python:3.1: docker.io/library/python:3.1: not found
[error] Error occurred while building container 'ghcr.io/openproblems-bio/label_projection/methods/knn:test'
ERROR! Setup failed!
Script error
When the executed script has an error it will be printed out like the example below. In most cases you can find the problem in the stack trace.
+/tmp/viash_test_knn14797416935521308344/test_generic_test/test_executable
>> Running script as test
Load input data
Traceback (most recent call last):
File "/tmp/viash-run-knn-p4pvkA.py", line 31, in <module>
input_test = ad.read_h5ad(par['input_test'])
File "/usr/local/lib/python3.10/site-packages/anndata/_io/h5ad.py", line 224, in read_h5ad
with h5py.File(filename, "r") as f:
File "/usr/local/lib/python3.10/site-packages/h5py/_hl/files.py", line 542, in __init__
name = filename_encode(name)
File "/usr/local/lib/python3.10/site-packages/h5py/_hl/compat.py", line 19, in filename_encode
filename = fspath(filename)
TypeError: expected str, bytes or os.PathLike object, not NoneType
Method script with returncode ...