From f4ba8465aba334c670c41be5393a83c894fb919d Mon Sep 17 00:00:00 2001 From: Luis Aleixo Date: Fri, 9 Sep 2022 16:11:53 +0200 Subject: [PATCH] updated folder's names and respective references --- .github/workflows/tests.yml | 6 +- .gitignore | 2 +- .gitlab-ci.yml | 2 +- .readthedocs.yaml | 2 +- README.md | 22 ++-- .../caimira-public-docker-image/Dockerfile | 2 +- .../caimira-public-docker-image/nginx.conf | 2 +- .../caimira-public-docker-image/run_cara.sh | 10 +- app-config/caimira-webservice/Dockerfile | 2 +- app-config/caimira-webservice/app.sh | 6 +- app-config/docker-compose.yml | 2 +- app-config/openshift/deploymentconfig.yaml | 2 +- {cara => caimira}/__init__.py | 4 +- {cara => caimira}/apps/__init__.py | 0 {cara => caimira}/apps/calculator/__init__.py | 12 +-- {cara => caimira}/apps/calculator/__main__.py | 0 .../apps/calculator/markdown_tools.py | 0 .../apps/calculator/model_generator.py | 22 ++-- .../apps/calculator/report_generator.py | 4 +- .../apps/calculator/static/css/form.css | 0 .../apps/calculator/static/css/report.css | 0 .../calculator/static/images/disclaimer.jpg | Bin .../static/images/warning_scale/green-1.png | Bin .../static/images/warning_scale/orange-3.png | Bin .../static/images/warning_scale/red-4.png | Bin .../static/images/warning_scale/yellow-2.png | Bin .../static/images/window_opening.png | Bin .../calculator/static/images/window_type.PNG | Bin .../apps/calculator/static/js/form.js | 0 .../apps/calculator/static/js/report.js | 0 {cara => caimira}/apps/calculator/user.py | 0 {cara => caimira}/apps/expert.py | 6 +- {cara => caimira}/apps/expert/cara.ipynb | 6 +- .../expert/static/images/header_image.png | Bin {cara => caimira}/apps/static/css/style.css | 8 +- .../apps/static/icons/calculator.svg | 0 .../apps/static/icons/expert.svg | 0 .../static/images/CAiMIRA_1_Vs3_Colour.jpg | Bin .../apps/static/images/caimira_full_logo.png | Bin .../apps/static/images/caimira_full_text.png | Bin .../static/images/caimira_logo_white_text.png | Bin .../apps/static/images/long_range_anim.png | Bin .../apps/static/images/masks/ffp2.png | Bin .../apps/static/images/masks/t1.png | Bin .../static/images/nat_vent_dimensions.png | Bin .../apps/static/images/short_range_anim.png | Bin .../apps/static/js/ScrollMagic.min.js | 0 .../apps/static/js/jquery.colorbox-min.js | 0 .../apps/static/js/js_packaged_for_theme.js | 0 .../apps/static/js/usage-tracking.js | 2 +- .../apps/templates/about.html.j2 | 0 .../templates/base/calculator.form.html.j2 | 2 +- .../templates/base/calculator.report.html.j2 | 0 .../apps/templates/base/index.html.j2 | 4 +- .../apps/templates/base/layout.html.j2 | 0 .../apps/templates/base/userguide.html.j2 | 0 .../apps/templates/calculator.form.html.j2 | 0 .../apps/templates/calculator.report.html.j2 | 0 .../templates/cern/calculator.form.html.j2 | 0 .../templates/cern/calculator.report.html.j2 | 0 .../apps/templates/cern/index.html.j2 | 4 +- .../apps/templates/cern/layout.html.j2 | 0 .../apps/templates/cern/userguide.html.j2 | 0 .../apps/templates/common_text.md.j2 | 0 .../apps/templates/index.html.j2 | 0 .../apps/templates/layout.html.j2 | 0 {cara => caimira}/apps/templates/page.html.j2 | 0 .../apps/templates/userguide.html.j2 | 0 {cara => caimira}/data/__init__.py | 4 +- .../data/global_weather_set.json | 0 .../hadisd_station_fullinfo_v311_202001p.txt | 0 {cara => caimira}/data/weather.py | 0 {cara => caimira}/dataclass_utils.py | 0 {cara => caimira}/docs/Makefile | 0 {cara => caimira}/docs/UML-CARA.png | Bin .../docs/cara.apps.calculator.rst | 0 {cara => caimira}/docs/cara.apps.rst | 0 {cara => caimira}/docs/cara.data.rst | 0 {cara => caimira}/docs/cara.monte_carlo.rst | 0 {cara => caimira}/docs/cara.rst | 0 .../docs/cara.tests.apps.calculator.rst | 0 {cara => caimira}/docs/cara.tests.apps.rst | 0 {cara => caimira}/docs/cara.tests.data.rst | 0 {cara => caimira}/docs/cara.tests.models.rst | 0 {cara => caimira}/docs/cara.tests.rst | 0 {cara => caimira}/docs/conf.py | 2 +- .../docs/full_diameter_dependence.rst | 0 {cara => caimira}/docs/index.rst | 6 +- {cara => caimira}/docs/make.bat | 0 {cara => caimira}/models.py | 10 +- {cara => caimira}/monte_carlo/__init__.py | 0 {cara => caimira}/monte_carlo/__init__.pyi | 0 {cara => caimira}/monte_carlo/data.py | 4 +- {cara => caimira}/monte_carlo/models.py | 32 +++--- {cara => caimira}/monte_carlo/sampleable.py | 4 +- .../scripts/themes/base/cara_script.command | 6 +- .../scripts/themes/base/cara_script.sh | 6 +- .../scripts/themes/cern/cara_script.command | 6 +- .../scripts/themes/cern/cara_script.sh | 6 +- {cara => caimira}/state.py | 2 +- {cara => caimira}/tests/__init__.py | 0 {cara => caimira}/tests/apps/__init__.py | 0 .../tests/apps/calculator/__init__.py | 0 .../tests/apps/calculator/conftest.py | 2 +- .../apps/calculator/test_markdown_tools.py | 2 +- .../apps/calculator/test_model_generator.py | 10 +- .../apps/calculator/test_report_generator.py | 8 +- .../tests/apps/calculator/test_webapp.py | 18 ++-- .../tests/apps/test_expert_app.py | 4 +- {cara => caimira}/tests/conftest.py | 10 +- {cara => caimira}/tests/data/__init__.py | 0 {cara => caimira}/tests/data/test_weather.py | 2 +- {cara => caimira}/tests/models/__init__.py | 0 .../tests/models/test_concentration_model.py | 2 +- .../tests/models/test_exposure_model.py | 6 +- {cara => caimira}/tests/models/test_mask.py | 2 +- .../tests/models/test_piecewiseconstant.py | 4 +- .../tests/models/test_short_range_model.py | 8 +- {cara => caimira}/tests/test_cara.py | 4 +- .../tests/test_dataclass_utils.py | 2 +- {cara => caimira}/tests/test_expiration.py | 4 +- .../tests/test_full_algorithm.py | 18 ++-- .../tests/test_infected_population.py | 14 +-- .../tests/test_known_quantities.py | 4 +- {cara => caimira}/tests/test_model.py | 4 +- caimira/tests/test_monte_carlo.py | 97 ++++++++++++++++++ .../tests/test_monte_carlo_full_models.py | 8 +- .../tests/test_predefined_distributions.py | 2 +- .../tests/test_sampleable_distribution.py | 2 +- {cara => caimira}/tests/test_state.py | 2 +- {cara => caimira}/tests/test_ventilation.py | 2 +- {cara => caimira}/utils.py | 0 .../tests/apps/calculator/test_report_json.py | 31 ------ cara/tests/models/test_virus.py | 25 ----- cara/tests/test_monte_carlo.py | 97 ------------------ requirements.txt | 4 +- server-performance-tests/README.md | 2 +- setup.py | 10 +- 138 files changed, 288 insertions(+), 344 deletions(-) rename {cara => caimira}/__init__.py (52%) rename {cara => caimira}/apps/__init__.py (100%) rename {cara => caimira}/apps/calculator/__init__.py (96%) rename {cara => caimira}/apps/calculator/__main__.py (100%) rename {cara => caimira}/apps/calculator/markdown_tools.py (100%) rename {cara => caimira}/apps/calculator/model_generator.py (98%) rename {cara => caimira}/apps/calculator/report_generator.py (99%) rename {cara => caimira}/apps/calculator/static/css/form.css (100%) rename {cara => caimira}/apps/calculator/static/css/report.css (100%) rename {cara => caimira}/apps/calculator/static/images/disclaimer.jpg (100%) rename {cara => caimira}/apps/calculator/static/images/warning_scale/green-1.png (100%) rename {cara => caimira}/apps/calculator/static/images/warning_scale/orange-3.png (100%) rename {cara => caimira}/apps/calculator/static/images/warning_scale/red-4.png (100%) rename {cara => caimira}/apps/calculator/static/images/warning_scale/yellow-2.png (100%) rename {cara => caimira}/apps/calculator/static/images/window_opening.png (100%) rename {cara => caimira}/apps/calculator/static/images/window_type.PNG (100%) rename {cara => caimira}/apps/calculator/static/js/form.js (100%) rename {cara => caimira}/apps/calculator/static/js/report.js (100%) rename {cara => caimira}/apps/calculator/user.py (100%) rename {cara => caimira}/apps/expert.py (99%) rename {cara => caimira}/apps/expert/cara.ipynb (79%) rename {cara => caimira}/apps/expert/static/images/header_image.png (100%) rename {cara => caimira}/apps/static/css/style.css (98%) rename {cara => caimira}/apps/static/icons/calculator.svg (100%) rename {cara => caimira}/apps/static/icons/expert.svg (100%) rename {cara => caimira}/apps/static/images/CAiMIRA_1_Vs3_Colour.jpg (100%) rename {cara => caimira}/apps/static/images/caimira_full_logo.png (100%) rename {cara => caimira}/apps/static/images/caimira_full_text.png (100%) rename {cara => caimira}/apps/static/images/caimira_logo_white_text.png (100%) rename {cara => caimira}/apps/static/images/long_range_anim.png (100%) rename {cara => caimira}/apps/static/images/masks/ffp2.png (100%) rename {cara => caimira}/apps/static/images/masks/t1.png (100%) rename {cara => caimira}/apps/static/images/nat_vent_dimensions.png (100%) rename {cara => caimira}/apps/static/images/short_range_anim.png (100%) rename {cara => caimira}/apps/static/js/ScrollMagic.min.js (100%) rename {cara => caimira}/apps/static/js/jquery.colorbox-min.js (100%) rename {cara => caimira}/apps/static/js/js_packaged_for_theme.js (100%) rename {cara => caimira}/apps/static/js/usage-tracking.js (95%) rename {cara => caimira}/apps/templates/about.html.j2 (100%) rename {cara => caimira}/apps/templates/base/calculator.form.html.j2 (99%) rename {cara => caimira}/apps/templates/base/calculator.report.html.j2 (100%) rename {cara => caimira}/apps/templates/base/index.html.j2 (98%) rename {cara => caimira}/apps/templates/base/layout.html.j2 (100%) rename {cara => caimira}/apps/templates/base/userguide.html.j2 (100%) rename {cara => caimira}/apps/templates/calculator.form.html.j2 (100%) rename {cara => caimira}/apps/templates/calculator.report.html.j2 (100%) rename {cara => caimira}/apps/templates/cern/calculator.form.html.j2 (100%) rename {cara => caimira}/apps/templates/cern/calculator.report.html.j2 (100%) rename {cara => caimira}/apps/templates/cern/index.html.j2 (89%) rename {cara => caimira}/apps/templates/cern/layout.html.j2 (100%) rename {cara => caimira}/apps/templates/cern/userguide.html.j2 (100%) rename {cara => caimira}/apps/templates/common_text.md.j2 (100%) rename {cara => caimira}/apps/templates/index.html.j2 (100%) rename {cara => caimira}/apps/templates/layout.html.j2 (100%) rename {cara => caimira}/apps/templates/page.html.j2 (100%) rename {cara => caimira}/apps/templates/userguide.html.j2 (100%) rename {cara => caimira}/data/__init__.py (94%) rename {cara => caimira}/data/global_weather_set.json (100%) rename {cara => caimira}/data/hadisd_station_fullinfo_v311_202001p.txt (100%) rename {cara => caimira}/data/weather.py (100%) rename {cara => caimira}/dataclass_utils.py (100%) rename {cara => caimira}/docs/Makefile (100%) rename {cara => caimira}/docs/UML-CARA.png (100%) rename {cara => caimira}/docs/cara.apps.calculator.rst (100%) rename {cara => caimira}/docs/cara.apps.rst (100%) rename {cara => caimira}/docs/cara.data.rst (100%) rename {cara => caimira}/docs/cara.monte_carlo.rst (100%) rename {cara => caimira}/docs/cara.rst (100%) rename {cara => caimira}/docs/cara.tests.apps.calculator.rst (100%) rename {cara => caimira}/docs/cara.tests.apps.rst (100%) rename {cara => caimira}/docs/cara.tests.data.rst (100%) rename {cara => caimira}/docs/cara.tests.models.rst (100%) rename {cara => caimira}/docs/cara.tests.rst (100%) rename {cara => caimira}/docs/conf.py (99%) rename {cara => caimira}/docs/full_diameter_dependence.rst (100%) rename {cara => caimira}/docs/index.rst (79%) rename {cara => caimira}/docs/make.bat (100%) rename {cara => caimira}/models.py (99%) rename {cara => caimira}/monte_carlo/__init__.py (100%) rename {cara => caimira}/monte_carlo/__init__.pyi (100%) rename {cara => caimira}/monte_carlo/data.py (98%) rename {cara => caimira}/monte_carlo/models.py (78%) rename {cara => caimira}/monte_carlo/sampleable.py (98%) rename {cara => caimira}/scripts/themes/base/cara_script.command (78%) rename {cara => caimira}/scripts/themes/base/cara_script.sh (62%) rename {cara => caimira}/scripts/themes/cern/cara_script.command (73%) rename {cara => caimira}/scripts/themes/cern/cara_script.sh (55%) rename {cara => caimira}/state.py (99%) rename {cara => caimira}/tests/__init__.py (100%) rename {cara => caimira}/tests/apps/__init__.py (100%) rename {cara => caimira}/tests/apps/calculator/__init__.py (100%) rename {cara => caimira}/tests/apps/calculator/conftest.py (81%) rename {cara => caimira}/tests/apps/calculator/test_markdown_tools.py (91%) rename {cara => caimira}/tests/apps/calculator/test_model_generator.py (98%) rename {cara => caimira}/tests/apps/calculator/test_report_generator.py (93%) rename {cara => caimira}/tests/apps/calculator/test_webapp.py (89%) rename {cara => caimira}/tests/apps/test_expert_app.py (90%) rename {cara => caimira}/tests/conftest.py (90%) rename {cara => caimira}/tests/data/__init__.py (100%) rename {cara => caimira}/tests/data/test_weather.py (98%) rename {cara => caimira}/tests/models/__init__.py (100%) rename {cara => caimira}/tests/models/test_concentration_model.py (99%) rename {cara => caimira}/tests/models/test_exposure_model.py (98%) rename {cara => caimira}/tests/models/test_mask.py (97%) rename {cara => caimira}/tests/models/test_piecewiseconstant.py (98%) rename {cara => caimira}/tests/models/test_short_range_model.py (96%) rename {cara => caimira}/tests/test_cara.py (53%) rename {cara => caimira}/tests/test_dataclass_utils.py (91%) rename {cara => caimira}/tests/test_expiration.py (95%) rename {cara => caimira}/tests/test_full_algorithm.py (98%) rename {cara => caimira}/tests/test_infected_population.py (74%) rename {cara => caimira}/tests/test_known_quantities.py (99%) rename {cara => caimira}/tests/test_model.py (87%) create mode 100644 caimira/tests/test_monte_carlo.py rename {cara => caimira}/tests/test_monte_carlo_full_models.py (97%) rename {cara => caimira}/tests/test_predefined_distributions.py (94%) rename {cara => caimira}/tests/test_sampleable_distribution.py (99%) rename {cara => caimira}/tests/test_state.py (99%) rename {cara => caimira}/tests/test_ventilation.py (99%) rename {cara => caimira}/utils.py (100%) delete mode 100644 cara/tests/apps/calculator/test_report_json.py delete mode 100644 cara/tests/models/test_virus.py delete mode 100644 cara/tests/test_monte_carlo.py diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 5c41b8ea..20a79941 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,4 +1,4 @@ -# This module is part of CARA. Please see the repository at +# This module is part of CAiMIRA. Please see the repository at # https://gitlab.cern.ch/cara/cara for details of the license and terms of use. name: CI @@ -23,7 +23,7 @@ jobs: runs-on: ubuntu-latest env: PROJECT_ROOT: ./ - PROJECT_NAME: cara + PROJECT_NAME: caimira steps: - name: Checkout uses: actions/checkout@v2 @@ -45,7 +45,7 @@ jobs: runs-on: ubuntu-20.04 env: PROJECT_ROOT: ./ - PROJECT_NAME: cara + PROJECT_NAME: caimira steps: - name: Checkout uses: actions/checkout@v2 diff --git a/.gitignore b/.gitignore index 3342d644..5ba02f52 100644 --- a/.gitignore +++ b/.gitignore @@ -18,4 +18,4 @@ app-config/openshift/caimira-test app-config/openshift/caimira-prod # documentation build folder -cara/docs/_build \ No newline at end of file +caimira/docs/_build \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ba39e7f8..f45e3f43 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -11,7 +11,7 @@ include: file: acc_py_devtools/templates/gitlab-ci/python.yml variables: - project_name: cara + project_name: caimira PY_VERSION: "3.9" diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 44aa3959..8a50de4c 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -17,7 +17,7 @@ build: # Build documentation in the docs/ directory with Sphinx sphinx: - configuration: cara/docs/conf.py + configuration: caimira/docs/conf.py # If using Sphinx, optionally build your docs in additional formats such as PDF # formats: diff --git a/README.md b/README.md index 75c33542..e1dbd8d6 100644 --- a/README.md +++ b/README.md @@ -86,7 +86,7 @@ This will start a local version of CAiMIRA, which can be visited at http://local ## Development guide -CAiMIRA is also mirrored to Github if you wish to collaborate on development and can be found at: https://github.com/CERN/cara +CAiMIRA is also mirrored to Github if you wish to collaborate on development and can be found at: https://github.com/CERN/caimira ### Installing CAiMIRA in editable mode @@ -97,19 +97,19 @@ pip install -e . # At the root of the repository ### Running the COVID calculator app in development mode ``` -python -m cara.apps.calculator +python -m caimira.apps.calculator ``` To run with the CERN theme: ``` -python -m cara.apps.calculator --theme=cara/apps/templates/cern +python -m caimira.apps.calculator --theme=caimira/apps/templates/cern ``` To run the calculator on a different URL path: ``` -python -m cara.apps.calculator --prefix=/mycalc +python -m caimira.apps.calculator --prefix=/mycalc ``` ### How to compile and read the documentation @@ -120,15 +120,15 @@ In order to generate the documentation, CAiMIRA must be installed first with the pip install -e .[doc] ``` -To generate the HTML documentation page, the command `make html` should be executed in the `cara/docs` directory. -If any of the `.rst` files under the `cara/docs` folder is changed, this command should be executed again. +To generate the HTML documentation page, the command `make html` should be executed in the `caimira/docs` directory. +If any of the `.rst` files under the `caimira/docs` folder is changed, this command should be executed again. -Then, right click on `cara/docs/_build/html/index.html` and select `Open with` your preferred web browser. +Then, right click on `caimira/docs/_build/html/index.html` and select `Open with` your preferred web browser. ### Running the CAiMIRA Expert-App app in development mode ``` -voila cara/apps/expert/cara.ipynb --port=8080 +voila caimira/apps/expert/caimira.ipynb --port=8080 ``` Then visit http://localhost:8080. @@ -138,7 +138,7 @@ Then visit http://localhost:8080. ``` pip install -e .[test] -pytest ./cara +pytest ./caimira ``` ### Building the whole environment for local development @@ -175,7 +175,7 @@ Then visit http://localhost:8080/. ### Setting up the application on openshift -The https://cern.ch/cara application is running on CERN's OpenShift platform. In order to set it up for the first time, we followed the documentation at https://cern.service-now.com/service-portal?id=kb_article&n=KB0004498. In particular we: +The https://cern.ch/caimira application is running on CERN's OpenShift platform. In order to set it up for the first time, we followed the documentation at https://cern.service-now.com/service-portal?id=kb_article&n=KB0004498. In particular we: * Added the OpenShift application deploy key to the GitLab repository * Created a Python 3.6 (the highest possible at the time of writing) application in OpenShift @@ -183,7 +183,7 @@ The https://cern.ch/cara application is running on CERN's OpenShift platform. In ### Updating the caimira-test.web.cern.ch instance -We have a replica of https://cara.web.cern.ch running on http://caimira-test.web.cern.ch. Its purpose is to simulate what will happen when +We have a replica of https://caimira.web.cern.ch running on http://caimira-test.web.cern.ch. Its purpose is to simulate what will happen when a feature is merged. To push your changes to caimira-test, simply push your branch to `live/caimira-test` and the CI pipeline will trigger the deployment. To push to this branch, there is a good chance that you will need to force push - you should always force push with care and understanding why you are doing it. Syntactically, it will look something like (assuming that you have "upstream" as your remote name, diff --git a/app-config/caimira-public-docker-image/Dockerfile b/app-config/caimira-public-docker-image/Dockerfile index 170b958c..ee69552b 100644 --- a/app-config/caimira-public-docker-image/Dockerfile +++ b/app-config/caimira-public-docker-image/Dockerfile @@ -9,7 +9,7 @@ RUN apt-get update && apt-get install -y nginx # Now that we have done the installation of the dependencies, copy the caimira source. COPY ./ /opt/caimira/src -COPY ./app-config/caimira-public-docker-image/run_cara.sh /opt/caimira/start.sh +COPY ./app-config/caimira-public-docker-image/run_caimira.sh /opt/caimira/start.sh # To ensure that we have installed the full requirements, re-run the pip install. # In the best case this will be a no-op. diff --git a/app-config/caimira-public-docker-image/nginx.conf b/app-config/caimira-public-docker-image/nginx.conf index b873a7d2..88cd8e2b 100644 --- a/app-config/caimira-public-docker-image/nginx.conf +++ b/app-config/caimira-public-docker-image/nginx.conf @@ -37,7 +37,7 @@ http { listen 8080 default_server; listen [::]:8080 default_server; server_name _; - root /opt/cara/src; + root /opt/caimira/src; # Load configuration files for the default server block. include /opt/app-root/etc/nginx.default.d/*.conf; diff --git a/app-config/caimira-public-docker-image/run_cara.sh b/app-config/caimira-public-docker-image/run_cara.sh index 43d963b2..bfaa57ab 100755 --- a/app-config/caimira-public-docker-image/run_cara.sh +++ b/app-config/caimira-public-docker-image/run_cara.sh @@ -1,16 +1,16 @@ -echo 'CARA is running on http://localhost:8080' +echo 'CAiMIRA is running on http://localhost:8080' echo 'Please see https://gitlab.cern.ch/cara/cara for terms of use.' # Run a proxy for the apps (listening on 8080). -nginx -c /opt/cara/nginx.conf +nginx -c /opt/caimira/nginx.conf # Run the expert app in the background. -cd /opt/cara/src/cara -/opt/cara/app/bin/python -m voila /opt/cara/src/cara/apps/expert/cara.ipynb \ +cd /opt/caimira/src/caimira +/opt/caimira/app/bin/python -m voila /opt/caimira/src/caimira/apps/expert/caimira.ipynb \ --port=8082 --no-browser --base_url=/voila-server/ \ --Voila.tornado_settings 'allow_origin=*' \ >> /var/log/expert-app.log 2>&1 & # Run the calculator in the foreground. -/opt/cara/app/bin/python -m cara.apps.calculator --port 8081 --no-debug +/opt/caimira/app/bin/python -m caimira.apps.calculator --port 8081 --no-debug diff --git a/app-config/caimira-webservice/Dockerfile b/app-config/caimira-webservice/Dockerfile index b7061d03..0a652800 100644 --- a/app-config/caimira-webservice/Dockerfile +++ b/app-config/caimira-webservice/Dockerfile @@ -29,7 +29,7 @@ RUN mkdir -p /scratch \ # Set the HOME directory to something that anybody can write to (to support non root users, such as on openshift). ENV HOME=/scratch WORKDIR /scratch -RUN CAIMIRA_INIT_FILE=$(/opt/app/bin/python -c "import cara; print(cara.__file__)") \ +RUN CAIMIRA_INIT_FILE=$(/opt/app/bin/python -c "import caimira; print(caimira.__file__)") \ && ln -s $(dirname ${CAIMIRA_INIT_FILE}) /scratch/caimira CMD [ \ "caimira-app.sh" \ diff --git a/app-config/caimira-webservice/app.sh b/app-config/caimira-webservice/app.sh index 823c04f1..9ea2862a 100755 --- a/app-config/caimira-webservice/app.sh +++ b/app-config/caimira-webservice/app.sh @@ -14,11 +14,11 @@ if [[ "$APP_NAME" == "caimira-webservice" ]]; then args+=("--prefix=${CAIMIRA_CALCULATOR_PREFIX}") fi - echo "Starting the caimira webservice with: python -m cara.apps.calculator ${args[@]}" - python -m cara.apps.calculator "${args[@]}" + echo "Starting the caimira webservice with: python -m caimira.apps.calculator ${args[@]}" + python -m caimira.apps.calculator "${args[@]}" elif [[ "$APP_NAME" == "caimira-voila" ]]; then echo "Starting the voila service" - voila cara/apps/expert/ --port=8080 --no-browser --base_url=/voila-server/ --tornado_settings 'allow_origin=*' + voila caimira/apps/expert/ --port=8080 --no-browser --base_url=/voila-server/ --tornado_settings 'allow_origin=*' else echo "No APP_NAME specified" exit 1 diff --git a/app-config/docker-compose.yml b/app-config/docker-compose.yml index 13534ad6..cb9d3958 100644 --- a/app-config/docker-compose.yml +++ b/app-config/docker-compose.yml @@ -12,7 +12,7 @@ services: - COOKIE_SECRET - APP_NAME=caimira-webservice - CAIMIRA_CALCULATOR_PREFIX=/calculator-cern - - CAIMIRA_THEME=cara/apps/templates/cern + - CAIMIRA_THEME=caimira/apps/templates/cern user: ${CURRENT_UID} caimira-calculator-open: diff --git a/app-config/openshift/deploymentconfig.yaml b/app-config/openshift/deploymentconfig.yaml index 657404d5..520fa088 100644 --- a/app-config/openshift/deploymentconfig.yaml +++ b/app-config/openshift/deploymentconfig.yaml @@ -208,7 +208,7 @@ - name: CAIMIRA_CALCULATOR_PREFIX value: /calculator-cern - name: CAIMIRA_THEME - value: cara/apps/templates/cern + value: caimira/apps/templates/cern image: '${PROJECT_NAME}/caimira-webservice' ports: - containerPort: 8080 diff --git a/cara/__init__.py b/caimira/__init__.py similarity index 52% rename from cara/__init__.py rename to caimira/__init__.py index 0561df4a..cf04da3a 100644 --- a/cara/__init__.py +++ b/caimira/__init__.py @@ -1,7 +1,7 @@ -# This module is part of CARA. Please see the repository at +# This module is part of CAiMIRA. Please see the repository at # https://gitlab.cern.ch/cara/cara for details of the license and terms of use. """ -Documentation for the CARA package +Documentation for the CAiMIRA package """ diff --git a/cara/apps/__init__.py b/caimira/apps/__init__.py similarity index 100% rename from cara/apps/__init__.py rename to caimira/apps/__init__.py diff --git a/cara/apps/calculator/__init__.py b/caimira/apps/calculator/__init__.py similarity index 96% rename from cara/apps/calculator/__init__.py rename to caimira/apps/calculator/__init__.py index 40a13f1a..2010a624 100644 --- a/cara/apps/calculator/__init__.py +++ b/caimira/apps/calculator/__init__.py @@ -1,4 +1,4 @@ -# This module is part of CARA. Please see the repository at +# This module is part of CAiMIRA. Please see the repository at # https://gitlab.cern.ch/cara/cara for details of the license and terms of use. import asyncio @@ -31,7 +31,7 @@ from .user import AuthenticatedUser, AnonymousUser # Effectively, if the model increases its MAJOR version then so too should this # calculator version. If the calculator needs to make breaking changes (e.g. change # form attributes) then it can also increase its MAJOR version without needing to -# increase the overall CARA version (found at ``cara.__version__``). +# increase the overall CAiMIRA version (found at ``caimira.__version__``). __version__ = "4.2" @@ -40,7 +40,7 @@ class BaseRequestHandler(RequestHandler): """Called at the beginning of a request before `get`/`post`/etc.""" # Read the secure cookie which exists if we are in an authenticated - # context (though not if the cara webservice is running standalone). + # context (though not if the caimira webservice is running standalone). session = json.loads(self.get_secure_cookie('session') or 'null') if session: @@ -60,7 +60,7 @@ class BaseRequestHandler(RequestHandler): contents = ( f'Unfortunately an error occurred when processing your request. ' f'Please let us know about this issue with as much detail as possible at ' - f'CARA-dev@cern.ch, reporting status ' + f'CAiMIRA-dev@cern.ch, reporting status ' f'code {status_code}, the error id of "{error_id}" and the time of the ' f'request ({datetime.datetime.utcnow()}).



' ) @@ -269,9 +269,9 @@ def make_app( (calculator_prefix + r'/static/(.*)', StaticFileHandler, {'path': calculator_static_dir}), ] - cara_templates = Path(__file__).parent.parent / "templates" + caimira_templates = Path(__file__).parent.parent / "templates" calculator_templates = Path(__file__).parent / "templates" - templates_directories = [cara_templates, calculator_templates] + templates_directories = [caimira_templates, calculator_templates] if theme_dir: templates_directories.insert(0, theme_dir) loader = jinja2.FileSystemLoader([str(path) for path in templates_directories]) diff --git a/cara/apps/calculator/__main__.py b/caimira/apps/calculator/__main__.py similarity index 100% rename from cara/apps/calculator/__main__.py rename to caimira/apps/calculator/__main__.py diff --git a/cara/apps/calculator/markdown_tools.py b/caimira/apps/calculator/markdown_tools.py similarity index 100% rename from cara/apps/calculator/markdown_tools.py rename to caimira/apps/calculator/markdown_tools.py diff --git a/cara/apps/calculator/model_generator.py b/caimira/apps/calculator/model_generator.py similarity index 98% rename from cara/apps/calculator/model_generator.py rename to caimira/apps/calculator/model_generator.py index 9f9dbce3..254ae02c 100644 --- a/cara/apps/calculator/model_generator.py +++ b/caimira/apps/calculator/model_generator.py @@ -8,13 +8,13 @@ import json import numpy as np -from cara import models -from cara import data -import cara.data.weather -import cara.monte_carlo as mc +from caimira import models +from caimira import data +import caimira.data.weather +import caimira.monte_carlo as mc from .. import calculator -from cara.monte_carlo.data import activity_distributions, virus_distributions, mask_distributions, short_range_distances -from cara.monte_carlo.data import expiration_distribution, expiration_BLO_factors, expiration_distributions, short_range_expiration_distributions +from caimira.monte_carlo.data import activity_distributions, virus_distributions, mask_distributions, short_range_distances +from caimira.monte_carlo.data import expiration_distribution, expiration_BLO_factors, expiration_distributions, short_range_expiration_distributions LOG = logging.getLogger(__name__) @@ -330,7 +330,7 @@ class FormData: """ month = MONTH_NAMES.index(self.event_month) + 1 - timezone = cara.data.weather.timezone_at( + timezone = caimira.data.weather.timezone_at( latitude=self.location_latitude, longitude=self.location_longitude, ) # We choose the first of the month for the current year. @@ -351,7 +351,7 @@ class FormData: month = MONTH_NAMES.index(self.event_month) + 1 wx_station = self.nearest_weather_station() - temp_profile = cara.data.weather.mean_hourly_temperatures(wx_station[0], month) + temp_profile = caimira.data.weather.mean_hourly_temperatures(wx_station[0], month) _, utc_offset = self.tz_name_and_utc_offset() @@ -359,7 +359,7 @@ class FormData: # result the first data value may no longer be a midnight, and the hours # no longer ordered modulo 24). source_times = np.arange(24) + utc_offset - times, temp_profile = cara.data.weather.refine_hourly_data( + times, temp_profile = caimira.data.weather.refine_hourly_data( source_times, temp_profile, npts=24*10, # 10 steps per hour => 6 min steps @@ -418,9 +418,9 @@ class FormData: else: return models.MultipleVentilation((ventilation, infiltration_ventilation)) - def nearest_weather_station(self) -> cara.data.weather.WxStationRecordType: + def nearest_weather_station(self) -> caimira.data.weather.WxStationRecordType: """Return the nearest weather station (which has valid data) for this form""" - return cara.data.weather.nearest_wx_station( + return caimira.data.weather.nearest_wx_station( longitude=self.location_longitude, latitude=self.location_latitude ) diff --git a/cara/apps/calculator/report_generator.py b/caimira/apps/calculator/report_generator.py similarity index 99% rename from cara/apps/calculator/report_generator.py rename to caimira/apps/calculator/report_generator.py index 7ed38634..1a7cdf02 100644 --- a/cara/apps/calculator/report_generator.py +++ b/caimira/apps/calculator/report_generator.py @@ -11,8 +11,8 @@ import zlib import jinja2 import numpy as np -from cara import models -from cara.apps.calculator import markdown_tools +from caimira import models +from caimira.apps.calculator import markdown_tools from ... import monte_carlo as mc from .model_generator import FormData, _DEFAULT_MC_SAMPLE_SIZE from ... import dataclass_utils diff --git a/cara/apps/calculator/static/css/form.css b/caimira/apps/calculator/static/css/form.css similarity index 100% rename from cara/apps/calculator/static/css/form.css rename to caimira/apps/calculator/static/css/form.css diff --git a/cara/apps/calculator/static/css/report.css b/caimira/apps/calculator/static/css/report.css similarity index 100% rename from cara/apps/calculator/static/css/report.css rename to caimira/apps/calculator/static/css/report.css diff --git a/cara/apps/calculator/static/images/disclaimer.jpg b/caimira/apps/calculator/static/images/disclaimer.jpg similarity index 100% rename from cara/apps/calculator/static/images/disclaimer.jpg rename to caimira/apps/calculator/static/images/disclaimer.jpg diff --git a/cara/apps/calculator/static/images/warning_scale/green-1.png b/caimira/apps/calculator/static/images/warning_scale/green-1.png similarity index 100% rename from cara/apps/calculator/static/images/warning_scale/green-1.png rename to caimira/apps/calculator/static/images/warning_scale/green-1.png diff --git a/cara/apps/calculator/static/images/warning_scale/orange-3.png b/caimira/apps/calculator/static/images/warning_scale/orange-3.png similarity index 100% rename from cara/apps/calculator/static/images/warning_scale/orange-3.png rename to caimira/apps/calculator/static/images/warning_scale/orange-3.png diff --git a/cara/apps/calculator/static/images/warning_scale/red-4.png b/caimira/apps/calculator/static/images/warning_scale/red-4.png similarity index 100% rename from cara/apps/calculator/static/images/warning_scale/red-4.png rename to caimira/apps/calculator/static/images/warning_scale/red-4.png diff --git a/cara/apps/calculator/static/images/warning_scale/yellow-2.png b/caimira/apps/calculator/static/images/warning_scale/yellow-2.png similarity index 100% rename from cara/apps/calculator/static/images/warning_scale/yellow-2.png rename to caimira/apps/calculator/static/images/warning_scale/yellow-2.png diff --git a/cara/apps/calculator/static/images/window_opening.png b/caimira/apps/calculator/static/images/window_opening.png similarity index 100% rename from cara/apps/calculator/static/images/window_opening.png rename to caimira/apps/calculator/static/images/window_opening.png diff --git a/cara/apps/calculator/static/images/window_type.PNG b/caimira/apps/calculator/static/images/window_type.PNG similarity index 100% rename from cara/apps/calculator/static/images/window_type.PNG rename to caimira/apps/calculator/static/images/window_type.PNG diff --git a/cara/apps/calculator/static/js/form.js b/caimira/apps/calculator/static/js/form.js similarity index 100% rename from cara/apps/calculator/static/js/form.js rename to caimira/apps/calculator/static/js/form.js diff --git a/cara/apps/calculator/static/js/report.js b/caimira/apps/calculator/static/js/report.js similarity index 100% rename from cara/apps/calculator/static/js/report.js rename to caimira/apps/calculator/static/js/report.js diff --git a/cara/apps/calculator/user.py b/caimira/apps/calculator/user.py similarity index 100% rename from cara/apps/calculator/user.py rename to caimira/apps/calculator/user.py diff --git a/cara/apps/expert.py b/caimira/apps/expert.py similarity index 99% rename from cara/apps/expert.py rename to caimira/apps/expert.py index d61365d5..d3740bbf 100644 --- a/cara/apps/expert.py +++ b/caimira/apps/expert.py @@ -11,7 +11,7 @@ import matplotlib.patches as patches from matplotlib import pyplot as plt import numpy as np -from cara import data, models, state +from caimira import data, models, state def collapsible(widgets_to_collapse: typing.List, title: str, start_collapsed=False): @@ -850,7 +850,7 @@ baseline_model = models.ExposureModel( ) -class CARAStateBuilder(state.StateBuilder): +class CAIMIRAStateBuilder(state.StateBuilder): # Note: The methods in this class must correspond to the *type* of the data classes. # For example, build_type__VentilationBase is called when dealing with ConcentrationModel # types as it has a ventilation: _VentilationBase field. @@ -928,7 +928,7 @@ class ExpertApplication(Controller): def build_new_model(self) -> state.DataclassInstanceState[models.ExposureModel]: default_model = state.DataclassInstanceState( models.ExposureModel, - state_builder=CARAStateBuilder(), + state_builder=CAIMIRAStateBuilder(), ) default_model.dcs_update_from(baseline_model) # For the time-being, we have to initialise the select states. Careful diff --git a/cara/apps/expert/cara.ipynb b/caimira/apps/expert/cara.ipynb similarity index 79% rename from cara/apps/expert/cara.ipynb rename to caimira/apps/expert/cara.ipynb index 2c624082..747ab1e9 100644 --- a/cara/apps/expert/cara.ipynb +++ b/caimira/apps/expert/cara.ipynb @@ -7,7 +7,7 @@ "
\n", "
\n", "

\n", - "Please see the CAiMIRA homepage for details on the methodology, assumptions and limitations of CAiMIRA.

" + "Please see the CAiMIRA homepage for details on the methodology, assumptions and limitations of CAiMIRA.

" ] }, { @@ -21,9 +21,9 @@ }, "outputs": [], "source": [ - "import cara.apps\n", + "import caimira.apps\n", "\n", - "app = cara.apps.ExpertApplication()\n", + "app = caimira.apps.ExpertApplication()\n", "app.widget" ] } diff --git a/cara/apps/expert/static/images/header_image.png b/caimira/apps/expert/static/images/header_image.png similarity index 100% rename from cara/apps/expert/static/images/header_image.png rename to caimira/apps/expert/static/images/header_image.png diff --git a/cara/apps/static/css/style.css b/caimira/apps/static/css/style.css similarity index 98% rename from cara/apps/static/css/style.css rename to caimira/apps/static/css/style.css index fb6e2939..fa7d0d11 100644 --- a/cara/apps/static/css/style.css +++ b/caimira/apps/static/css/style.css @@ -92,7 +92,7 @@ body { height: 10em; } -.cara_home_image { +.caimira_home_image { height: 18rem; padding: 1rem; border-radius: 1.25rem!important; @@ -258,11 +258,11 @@ footer img { font-size:1rem; font-weight:bold; } - .cara_version { + .caimira_version { float:left; font-size:1rem; } - .cara_home_image { + .caimira_home_image { float: right; } @@ -314,7 +314,7 @@ footer img { font-size:.75rem; font-weight:bold; } - .cara_version { + .caimira_version { float:left; font-size:.75rem; } diff --git a/cara/apps/static/icons/calculator.svg b/caimira/apps/static/icons/calculator.svg similarity index 100% rename from cara/apps/static/icons/calculator.svg rename to caimira/apps/static/icons/calculator.svg diff --git a/cara/apps/static/icons/expert.svg b/caimira/apps/static/icons/expert.svg similarity index 100% rename from cara/apps/static/icons/expert.svg rename to caimira/apps/static/icons/expert.svg diff --git a/cara/apps/static/images/CAiMIRA_1_Vs3_Colour.jpg b/caimira/apps/static/images/CAiMIRA_1_Vs3_Colour.jpg similarity index 100% rename from cara/apps/static/images/CAiMIRA_1_Vs3_Colour.jpg rename to caimira/apps/static/images/CAiMIRA_1_Vs3_Colour.jpg diff --git a/cara/apps/static/images/caimira_full_logo.png b/caimira/apps/static/images/caimira_full_logo.png similarity index 100% rename from cara/apps/static/images/caimira_full_logo.png rename to caimira/apps/static/images/caimira_full_logo.png diff --git a/cara/apps/static/images/caimira_full_text.png b/caimira/apps/static/images/caimira_full_text.png similarity index 100% rename from cara/apps/static/images/caimira_full_text.png rename to caimira/apps/static/images/caimira_full_text.png diff --git a/cara/apps/static/images/caimira_logo_white_text.png b/caimira/apps/static/images/caimira_logo_white_text.png similarity index 100% rename from cara/apps/static/images/caimira_logo_white_text.png rename to caimira/apps/static/images/caimira_logo_white_text.png diff --git a/cara/apps/static/images/long_range_anim.png b/caimira/apps/static/images/long_range_anim.png similarity index 100% rename from cara/apps/static/images/long_range_anim.png rename to caimira/apps/static/images/long_range_anim.png diff --git a/cara/apps/static/images/masks/ffp2.png b/caimira/apps/static/images/masks/ffp2.png similarity index 100% rename from cara/apps/static/images/masks/ffp2.png rename to caimira/apps/static/images/masks/ffp2.png diff --git a/cara/apps/static/images/masks/t1.png b/caimira/apps/static/images/masks/t1.png similarity index 100% rename from cara/apps/static/images/masks/t1.png rename to caimira/apps/static/images/masks/t1.png diff --git a/cara/apps/static/images/nat_vent_dimensions.png b/caimira/apps/static/images/nat_vent_dimensions.png similarity index 100% rename from cara/apps/static/images/nat_vent_dimensions.png rename to caimira/apps/static/images/nat_vent_dimensions.png diff --git a/cara/apps/static/images/short_range_anim.png b/caimira/apps/static/images/short_range_anim.png similarity index 100% rename from cara/apps/static/images/short_range_anim.png rename to caimira/apps/static/images/short_range_anim.png diff --git a/cara/apps/static/js/ScrollMagic.min.js b/caimira/apps/static/js/ScrollMagic.min.js similarity index 100% rename from cara/apps/static/js/ScrollMagic.min.js rename to caimira/apps/static/js/ScrollMagic.min.js diff --git a/cara/apps/static/js/jquery.colorbox-min.js b/caimira/apps/static/js/jquery.colorbox-min.js similarity index 100% rename from cara/apps/static/js/jquery.colorbox-min.js rename to caimira/apps/static/js/jquery.colorbox-min.js diff --git a/cara/apps/static/js/js_packaged_for_theme.js b/caimira/apps/static/js/js_packaged_for_theme.js similarity index 100% rename from cara/apps/static/js/js_packaged_for_theme.js rename to caimira/apps/static/js/js_packaged_for_theme.js diff --git a/cara/apps/static/js/usage-tracking.js b/caimira/apps/static/js/usage-tracking.js similarity index 95% rename from cara/apps/static/js/usage-tracking.js rename to caimira/apps/static/js/usage-tracking.js index b0101b73..830b9894 100644 --- a/cara/apps/static/js/usage-tracking.js +++ b/caimira/apps/static/js/usage-tracking.js @@ -18,7 +18,7 @@ if (document.location.hostname == "caimira-test.web.cern.ch") { g.src = u + "piwik.js"; s.parentNode.insertBefore(g, s); })(); -} else if (document.location.hostname == "cara.web.cern.ch") { +} else if (document.location.hostname == "caimira.web.cern.ch") { var _paq = _paq || []; if (typeof AuthUserDomain !== 'undefined') { _paq.push(["setCustomVariable", 1, "AuthUserDomain", AuthUserDomain, "visit"]); diff --git a/cara/apps/templates/about.html.j2 b/caimira/apps/templates/about.html.j2 similarity index 100% rename from cara/apps/templates/about.html.j2 rename to caimira/apps/templates/about.html.j2 diff --git a/cara/apps/templates/base/calculator.form.html.j2 b/caimira/apps/templates/base/calculator.form.html.j2 similarity index 99% rename from cara/apps/templates/base/calculator.form.html.j2 rename to caimira/apps/templates/base/calculator.form.html.j2 index 7e8375ed..c73330ab 100644 --- a/cara/apps/templates/base/calculator.form.html.j2 +++ b/caimira/apps/templates/base/calculator.form.html.j2 @@ -18,7 +18,7 @@ {% block main %} -v{{ calculator_version }} +v{{ calculator_version }} Please send feedback to CAiMIRA-dev@cern.ch
diff --git a/cara/apps/templates/base/calculator.report.html.j2 b/caimira/apps/templates/base/calculator.report.html.j2 similarity index 100% rename from cara/apps/templates/base/calculator.report.html.j2 rename to caimira/apps/templates/base/calculator.report.html.j2 diff --git a/cara/apps/templates/base/index.html.j2 b/caimira/apps/templates/base/index.html.j2 similarity index 98% rename from cara/apps/templates/base/index.html.j2 rename to caimira/apps/templates/base/index.html.j2 index a7d5d020..86c1f46b 100644 --- a/cara/apps/templates/base/index.html.j2 +++ b/caimira/apps/templates/base/index.html.j2 @@ -46,8 +46,8 @@
- {% block cara_at_cern %} - {% endblock cara_at_cern %} + {% block caimira_at_cern %} + {% endblock caimira_at_cern %}
diff --git a/cara/apps/templates/base/layout.html.j2 b/caimira/apps/templates/base/layout.html.j2 similarity index 100% rename from cara/apps/templates/base/layout.html.j2 rename to caimira/apps/templates/base/layout.html.j2 diff --git a/cara/apps/templates/base/userguide.html.j2 b/caimira/apps/templates/base/userguide.html.j2 similarity index 100% rename from cara/apps/templates/base/userguide.html.j2 rename to caimira/apps/templates/base/userguide.html.j2 diff --git a/cara/apps/templates/calculator.form.html.j2 b/caimira/apps/templates/calculator.form.html.j2 similarity index 100% rename from cara/apps/templates/calculator.form.html.j2 rename to caimira/apps/templates/calculator.form.html.j2 diff --git a/cara/apps/templates/calculator.report.html.j2 b/caimira/apps/templates/calculator.report.html.j2 similarity index 100% rename from cara/apps/templates/calculator.report.html.j2 rename to caimira/apps/templates/calculator.report.html.j2 diff --git a/cara/apps/templates/cern/calculator.form.html.j2 b/caimira/apps/templates/cern/calculator.form.html.j2 similarity index 100% rename from cara/apps/templates/cern/calculator.form.html.j2 rename to caimira/apps/templates/cern/calculator.form.html.j2 diff --git a/cara/apps/templates/cern/calculator.report.html.j2 b/caimira/apps/templates/cern/calculator.report.html.j2 similarity index 100% rename from cara/apps/templates/cern/calculator.report.html.j2 rename to caimira/apps/templates/cern/calculator.report.html.j2 diff --git a/cara/apps/templates/cern/index.html.j2 b/caimira/apps/templates/cern/index.html.j2 similarity index 89% rename from cara/apps/templates/cern/index.html.j2 rename to caimira/apps/templates/cern/index.html.j2 index 692aeb67..1d861d99 100644 --- a/cara/apps/templates/cern/index.html.j2 +++ b/caimira/apps/templates/cern/index.html.j2 @@ -1,6 +1,6 @@ {% extends "base/index.html.j2" %} -{% block cara_at_cern %} +{% block caimira_at_cern %}

CAiMIRA @ CERN


@@ -8,4 +8,4 @@ A hosted CERN version of the CAiMIRA Covid Calculator is available on this site to members of the CERN personnel.

-{% endblock cara_at_cern %} \ No newline at end of file +{% endblock caimira_at_cern %} \ No newline at end of file diff --git a/cara/apps/templates/cern/layout.html.j2 b/caimira/apps/templates/cern/layout.html.j2 similarity index 100% rename from cara/apps/templates/cern/layout.html.j2 rename to caimira/apps/templates/cern/layout.html.j2 diff --git a/cara/apps/templates/cern/userguide.html.j2 b/caimira/apps/templates/cern/userguide.html.j2 similarity index 100% rename from cara/apps/templates/cern/userguide.html.j2 rename to caimira/apps/templates/cern/userguide.html.j2 diff --git a/cara/apps/templates/common_text.md.j2 b/caimira/apps/templates/common_text.md.j2 similarity index 100% rename from cara/apps/templates/common_text.md.j2 rename to caimira/apps/templates/common_text.md.j2 diff --git a/cara/apps/templates/index.html.j2 b/caimira/apps/templates/index.html.j2 similarity index 100% rename from cara/apps/templates/index.html.j2 rename to caimira/apps/templates/index.html.j2 diff --git a/cara/apps/templates/layout.html.j2 b/caimira/apps/templates/layout.html.j2 similarity index 100% rename from cara/apps/templates/layout.html.j2 rename to caimira/apps/templates/layout.html.j2 diff --git a/cara/apps/templates/page.html.j2 b/caimira/apps/templates/page.html.j2 similarity index 100% rename from cara/apps/templates/page.html.j2 rename to caimira/apps/templates/page.html.j2 diff --git a/cara/apps/templates/userguide.html.j2 b/caimira/apps/templates/userguide.html.j2 similarity index 100% rename from cara/apps/templates/userguide.html.j2 rename to caimira/apps/templates/userguide.html.j2 diff --git a/cara/data/__init__.py b/caimira/data/__init__.py similarity index 94% rename from cara/data/__init__.py rename to caimira/data/__init__.py index 9e6a523f..23dab962 100644 --- a/cara/data/__init__.py +++ b/caimira/data/__init__.py @@ -1,6 +1,6 @@ import numpy as np -from cara import models -from cara.data.weather import wx_data, nearest_wx_station +from caimira import models +from caimira.data.weather import wx_data, nearest_wx_station MONTH_NAMES = [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', diff --git a/cara/data/global_weather_set.json b/caimira/data/global_weather_set.json similarity index 100% rename from cara/data/global_weather_set.json rename to caimira/data/global_weather_set.json diff --git a/cara/data/hadisd_station_fullinfo_v311_202001p.txt b/caimira/data/hadisd_station_fullinfo_v311_202001p.txt similarity index 100% rename from cara/data/hadisd_station_fullinfo_v311_202001p.txt rename to caimira/data/hadisd_station_fullinfo_v311_202001p.txt diff --git a/cara/data/weather.py b/caimira/data/weather.py similarity index 100% rename from cara/data/weather.py rename to caimira/data/weather.py diff --git a/cara/dataclass_utils.py b/caimira/dataclass_utils.py similarity index 100% rename from cara/dataclass_utils.py rename to caimira/dataclass_utils.py diff --git a/cara/docs/Makefile b/caimira/docs/Makefile similarity index 100% rename from cara/docs/Makefile rename to caimira/docs/Makefile diff --git a/cara/docs/UML-CARA.png b/caimira/docs/UML-CARA.png similarity index 100% rename from cara/docs/UML-CARA.png rename to caimira/docs/UML-CARA.png diff --git a/cara/docs/cara.apps.calculator.rst b/caimira/docs/cara.apps.calculator.rst similarity index 100% rename from cara/docs/cara.apps.calculator.rst rename to caimira/docs/cara.apps.calculator.rst diff --git a/cara/docs/cara.apps.rst b/caimira/docs/cara.apps.rst similarity index 100% rename from cara/docs/cara.apps.rst rename to caimira/docs/cara.apps.rst diff --git a/cara/docs/cara.data.rst b/caimira/docs/cara.data.rst similarity index 100% rename from cara/docs/cara.data.rst rename to caimira/docs/cara.data.rst diff --git a/cara/docs/cara.monte_carlo.rst b/caimira/docs/cara.monte_carlo.rst similarity index 100% rename from cara/docs/cara.monte_carlo.rst rename to caimira/docs/cara.monte_carlo.rst diff --git a/cara/docs/cara.rst b/caimira/docs/cara.rst similarity index 100% rename from cara/docs/cara.rst rename to caimira/docs/cara.rst diff --git a/cara/docs/cara.tests.apps.calculator.rst b/caimira/docs/cara.tests.apps.calculator.rst similarity index 100% rename from cara/docs/cara.tests.apps.calculator.rst rename to caimira/docs/cara.tests.apps.calculator.rst diff --git a/cara/docs/cara.tests.apps.rst b/caimira/docs/cara.tests.apps.rst similarity index 100% rename from cara/docs/cara.tests.apps.rst rename to caimira/docs/cara.tests.apps.rst diff --git a/cara/docs/cara.tests.data.rst b/caimira/docs/cara.tests.data.rst similarity index 100% rename from cara/docs/cara.tests.data.rst rename to caimira/docs/cara.tests.data.rst diff --git a/cara/docs/cara.tests.models.rst b/caimira/docs/cara.tests.models.rst similarity index 100% rename from cara/docs/cara.tests.models.rst rename to caimira/docs/cara.tests.models.rst diff --git a/cara/docs/cara.tests.rst b/caimira/docs/cara.tests.rst similarity index 100% rename from cara/docs/cara.tests.rst rename to caimira/docs/cara.tests.rst diff --git a/cara/docs/conf.py b/caimira/docs/conf.py similarity index 99% rename from cara/docs/conf.py rename to caimira/docs/conf.py index 472456ed..2b9f7aaf 100644 --- a/cara/docs/conf.py +++ b/caimira/docs/conf.py @@ -17,7 +17,7 @@ sys.path.insert(0, os.path.abspath('..')) # -- Project information ----------------------------------------------------- -project = 'CARA' +project = 'CAiMIRA' copyright = '2022, Andre Henriques et al.' author = 'Andre Henriques et al.' diff --git a/cara/docs/full_diameter_dependence.rst b/caimira/docs/full_diameter_dependence.rst similarity index 100% rename from cara/docs/full_diameter_dependence.rst rename to caimira/docs/full_diameter_dependence.rst diff --git a/cara/docs/index.rst b/caimira/docs/index.rst similarity index 79% rename from cara/docs/index.rst rename to caimira/docs/index.rst index 3b5a57cc..b4450229 100644 --- a/cara/docs/index.rst +++ b/caimira/docs/index.rst @@ -1,9 +1,9 @@ -.. CARA documentation master file, created by +.. CAiMIRA documentation master file, created by sphinx-quickstart on Fri Apr 8 10:26:24 2022. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. -Welcome to CARA's documentation! +Welcome to CAiMIRA's documentation! ================================ .. toctree:: @@ -11,7 +11,7 @@ Welcome to CARA's documentation! :caption: Contents: full_diameter_dependence - cara + caimira Indices and tables diff --git a/cara/docs/make.bat b/caimira/docs/make.bat similarity index 100% rename from cara/docs/make.bat rename to caimira/docs/make.bat diff --git a/cara/models.py b/caimira/models.py similarity index 99% rename from cara/models.py rename to caimira/models.py index 9506b126..d517116b 100644 --- a/cara/models.py +++ b/caimira/models.py @@ -1,9 +1,9 @@ -# This module is part of CARA. Please see the repository at +# This module is part of CAiMIRA. Please see the repository at # https://gitlab.cern.ch/cara/cara for details of the license and terms of use. """ -This module implements the core CARA models. +This module implements the core CAiMIRA models. -The CARA model is a flexible, object-oriented numerical model. It is designed +The CAiMIRA model is a flexible, object-oriented numerical model. It is designed to allow the user to swap-out and extend its various components. One of the major abstractions of the model is the distinction between virus concentration (:class:`ConcentrationModel`) and virus exposure (:class:`ExposureModel`). @@ -15,10 +15,10 @@ deterministic (i.e. running the same model twice will result in the same answer) In order to apply stochastic / non-deterministic analyses therefore you must introduce the randomness before constructing the models themselves; the -:mod:`cara.monte_carlo` module is a good example of doing this - that module uses +:mod:`caimira.monte_carlo` module is a good example of doing this - that module uses the models defined here to allow you to construct a ConcentrationModel containing parameters which are expressed as probability distributions. Under the hood the -``cara.monte_carlo.ConcentrationModel`` implementation simply samples all of those +``caimira.monte_carlo.ConcentrationModel`` implementation simply samples all of those probability distributions to produce many instances of the deterministic model. The models in this module have been designed for flexibility above performance, diff --git a/cara/monte_carlo/__init__.py b/caimira/monte_carlo/__init__.py similarity index 100% rename from cara/monte_carlo/__init__.py rename to caimira/monte_carlo/__init__.py diff --git a/cara/monte_carlo/__init__.pyi b/caimira/monte_carlo/__init__.pyi similarity index 100% rename from cara/monte_carlo/__init__.pyi rename to caimira/monte_carlo/__init__.pyi diff --git a/cara/monte_carlo/data.py b/caimira/monte_carlo/data.py similarity index 98% rename from cara/monte_carlo/data.py rename to caimira/monte_carlo/data.py index b4f047c4..8ad2fcfc 100644 --- a/cara/monte_carlo/data.py +++ b/caimira/monte_carlo/data.py @@ -5,8 +5,8 @@ import numpy as np from scipy import special as sp from scipy.stats import weibull_min -import cara.monte_carlo as mc -from cara.monte_carlo.sampleable import LogCustom, LogNormal,LogCustomKernel,CustomKernel,Uniform, Custom +import caimira.monte_carlo as mc +from caimira.monte_carlo.sampleable import LogCustom, LogNormal,LogCustomKernel,CustomKernel,Uniform, Custom sqrt2pi = np.sqrt(2.*np.pi) sqrt2 = np.sqrt(2.) diff --git a/cara/monte_carlo/models.py b/caimira/monte_carlo/models.py similarity index 78% rename from cara/monte_carlo/models.py rename to caimira/monte_carlo/models.py index 4ab55363..dfa446bd 100644 --- a/cara/monte_carlo/models.py +++ b/caimira/monte_carlo/models.py @@ -3,7 +3,7 @@ import dataclasses import sys import typing -import cara.models +import caimira.models from .sampleable import SampleableDistribution, _VectorisedFloatOrSampleable @@ -14,9 +14,9 @@ class MCModelBase(typing.Generic[_ModelType]): """ A model base class for monte carlo types. - This base class is essentially a declarative description of a cara.models + This base class is essentially a declarative description of a caimira.models model with a :meth:`.build_model` method to generate an appropriate - ``cara.models` model instance on demand. + ``caimira.models` model instance on demand. """ _base_cls: typing.Type[_ModelType] @@ -36,7 +36,7 @@ class MCModelBase(typing.Generic[_ModelType]): def build_model(self, size: int) -> _ModelType: """ - Turn this MCModelBase subclass into a cara.model Model instance + Turn this MCModelBase subclass into a caimira.model Model instance from which you can then run the model. """ @@ -49,7 +49,7 @@ class MCModelBase(typing.Generic[_ModelType]): def _build_mc_model(model: _ModelType) -> typing.Type[MCModelBase[_ModelType]]: """ - Generate a new MCModelBase subclass for the given cara.models model. + Generate a new MCModelBase subclass for the given caimira.models model. """ fields = [] @@ -57,7 +57,7 @@ def _build_mc_model(model: _ModelType) -> typing.Type[MCModelBase[_ModelType]]: # Note: deepcopy not needed here as we aren't mutating entities beyond # the top level. new_field = copy.copy(field) - if field.type is cara.models._VectorisedFloat: # noqa + if field.type is caimira.models._VectorisedFloat: # noqa new_field.type = _VectorisedFloatOrSampleable # type: ignore field_type: typing.Any = new_field.type @@ -65,29 +65,29 @@ def _build_mc_model(model: _ModelType) -> typing.Type[MCModelBase[_ModelType]]: if getattr(field_type, '__origin__', None) in [typing.Union, typing.Tuple]: # It is challenging to generalise this code, so we provide specific transformations, # and raise for unforseen cases. - if new_field.type == typing.Tuple[cara.models._VentilationBase, ...]: + if new_field.type == typing.Tuple[caimira.models._VentilationBase, ...]: VB = getattr(sys.modules[__name__], "_VentilationBase") - field_type = typing.Tuple[typing.Union[cara.models._VentilationBase, VB], ...] - elif new_field.type == typing.Tuple[cara.models._ExpirationBase, ...]: + field_type = typing.Tuple[typing.Union[caimira.models._VentilationBase, VB], ...] + elif new_field.type == typing.Tuple[caimira.models._ExpirationBase, ...]: EB = getattr(sys.modules[__name__], "_ExpirationBase") - field_type = typing.Tuple[typing.Union[cara.models._ExpirationBase, EB], ...] - elif new_field.type == typing.Tuple[cara.models.SpecificInterval, ...]: + field_type = typing.Tuple[typing.Union[caimira.models._ExpirationBase, EB], ...] + elif new_field.type == typing.Tuple[caimira.models.SpecificInterval, ...]: SI = getattr(sys.modules[__name__], "SpecificInterval") - field_type = typing.Tuple[typing.Union[cara.models.SpecificInterval, SI], ...] + field_type = typing.Tuple[typing.Union[caimira.models.SpecificInterval, SI], ...] else: # Check that we don't need to do anything with this type. for item in new_field.type.__args__: - if getattr(item, '__module__', None) == 'cara.models': + if getattr(item, '__module__', None) == 'caimira.models': raise ValueError( f"unsupported type annotation transformation required for {new_field.type}") - elif field_type.__module__ == 'cara.models': + elif field_type.__module__ == 'caimira.models': mc_model = getattr(sys.modules[__name__], new_field.type.__name__) field_type = typing.Union[new_field.type, mc_model] fields.append((new_field.name, field_type, new_field)) bases = [] - # Update the inheritance/based to use the new MC classes, rather than the cara.models ones. + # Update the inheritance/based to use the new MC classes, rather than the caimira.models ones. for model_base in model.__bases__: # type: ignore if model_base is object: bases.append(MCModelBase) @@ -111,7 +111,7 @@ def _build_mc_model(model: _ModelType) -> typing.Type[MCModelBase[_ModelType]]: _MODEL_CLASSES = [ - cls for cls in vars(cara.models).values() + cls for cls in vars(caimira.models).values() if dataclasses.is_dataclass(cls) ] diff --git a/cara/monte_carlo/sampleable.py b/caimira/monte_carlo/sampleable.py similarity index 98% rename from cara/monte_carlo/sampleable.py rename to caimira/monte_carlo/sampleable.py index 1d887f12..479b91cf 100644 --- a/cara/monte_carlo/sampleable.py +++ b/caimira/monte_carlo/sampleable.py @@ -3,7 +3,7 @@ import typing import numpy as np from sklearn.neighbors import KernelDensity # type: ignore -import cara.models +import caimira.models # Declare a float array type of a given size. # There is no better way to declare this currently, unfortunately. @@ -158,5 +158,5 @@ class LogCustomKernel(SampleableDistribution): _VectorisedFloatOrSampleable = typing.Union[ - SampleableDistribution, cara.models._VectorisedFloat, + SampleableDistribution, caimira.models._VectorisedFloat, ] diff --git a/cara/scripts/themes/base/cara_script.command b/caimira/scripts/themes/base/cara_script.command similarity index 78% rename from cara/scripts/themes/base/cara_script.command rename to caimira/scripts/themes/base/cara_script.command index 77b0b4d5..49b418e4 100755 --- a/cara/scripts/themes/base/cara_script.command +++ b/caimira/scripts/themes/base/cara_script.command @@ -1,6 +1,6 @@ cd Downloads git clone https://gitlab.cern.ch/cara/cara.git -cd cara +cd caimira if [[ `uname -m` == 'arm64' ]]; then pip3 install scipy --index-url=https://pypi.anaconda.org/scipy-wheels-nightly/simple pip3 install Cython @@ -8,7 +8,7 @@ if [[ `uname -m` == 'arm64' ]]; then fi pip3 install -e . echo "############################################" -echo "CARA is now running at http://localhost:8080" +echo "CAiMIRA is now running at http://localhost:8080" echo "############################################" -python3 -m cara.apps.calculator +python3 -m caimira.apps.calculator diff --git a/cara/scripts/themes/base/cara_script.sh b/caimira/scripts/themes/base/cara_script.sh similarity index 62% rename from cara/scripts/themes/base/cara_script.sh rename to caimira/scripts/themes/base/cara_script.sh index 60f4aa52..8d0d15de 100755 --- a/cara/scripts/themes/base/cara_script.sh +++ b/caimira/scripts/themes/base/cara_script.sh @@ -1,8 +1,8 @@ git clone https://gitlab.cern.ch/cara/cara.git -cd cara +cd caimira pip install -e . echo "############################################" -echo "CARA is now running at http://localhost:8080" +echo "CAiMIRA is now running at http://localhost:8080" echo "############################################" -python -m cara.apps.calculator +python -m caimira.apps.calculator diff --git a/cara/scripts/themes/cern/cara_script.command b/caimira/scripts/themes/cern/cara_script.command similarity index 73% rename from cara/scripts/themes/cern/cara_script.command rename to caimira/scripts/themes/cern/cara_script.command index 0c244541..277fc3d1 100755 --- a/cara/scripts/themes/cern/cara_script.command +++ b/caimira/scripts/themes/cern/cara_script.command @@ -1,6 +1,6 @@ cd Downloads git clone https://gitlab.cern.ch/cara/cara.git -cd cara +cd caimira if [[ `uname -m` == 'arm64' ]]; then pip3 install scipy --index-url=https://pypi.anaconda.org/scipy-wheels-nightly/simple pip3 install Cython @@ -8,7 +8,7 @@ if [[ `uname -m` == 'arm64' ]]; then fi pip3 install -e . echo "############################################" -echo "CARA is now running at http://localhost:8080" +echo "CAiMIRA is now running at http://localhost:8080" echo "############################################" -python3 -m cara.apps.calculator --theme=cara/apps/templates/cern +python3 -m caimira.apps.calculator --theme=caimira/apps/templates/cern diff --git a/cara/scripts/themes/cern/cara_script.sh b/caimira/scripts/themes/cern/cara_script.sh similarity index 55% rename from cara/scripts/themes/cern/cara_script.sh rename to caimira/scripts/themes/cern/cara_script.sh index 9861ef74..306b94c9 100755 --- a/cara/scripts/themes/cern/cara_script.sh +++ b/caimira/scripts/themes/cern/cara_script.sh @@ -1,8 +1,8 @@ git clone https://gitlab.cern.ch/cara/cara.git -cd cara +cd caimira pip install -e . echo "############################################" -echo "CARA is now running at http://localhost:8080" +echo "CAiMIRA is now running at http://localhost:8080" echo "############################################" -python -m cara.apps.calculator --theme=cara/apps/templates/cern +python -m caimira.apps.calculator --theme=caimira/apps/templates/cern diff --git a/cara/state.py b/caimira/state.py similarity index 99% rename from cara/state.py rename to caimira/state.py index ddbd73a3..d65fe2c5 100644 --- a/cara/state.py +++ b/caimira/state.py @@ -5,7 +5,7 @@ for this purpose, but the need to define class-level attributes proved to be a limitation that meant we could not mutate the state from one subclass to another after the state was instantiated. -This module MUST not import other parts of cara as this would point at a +This module MUST not import other parts of caimira as this would point at a leaky abstraction. """ diff --git a/cara/tests/__init__.py b/caimira/tests/__init__.py similarity index 100% rename from cara/tests/__init__.py rename to caimira/tests/__init__.py diff --git a/cara/tests/apps/__init__.py b/caimira/tests/apps/__init__.py similarity index 100% rename from cara/tests/apps/__init__.py rename to caimira/tests/apps/__init__.py diff --git a/cara/tests/apps/calculator/__init__.py b/caimira/tests/apps/calculator/__init__.py similarity index 100% rename from cara/tests/apps/calculator/__init__.py rename to caimira/tests/apps/calculator/__init__.py diff --git a/cara/tests/apps/calculator/conftest.py b/caimira/tests/apps/calculator/conftest.py similarity index 81% rename from cara/tests/apps/calculator/conftest.py rename to caimira/tests/apps/calculator/conftest.py index 6e9c4074..7e46d0cf 100644 --- a/cara/tests/apps/calculator/conftest.py +++ b/caimira/tests/apps/calculator/conftest.py @@ -1,6 +1,6 @@ import pytest -from cara.apps.calculator import model_generator +from caimira.apps.calculator import model_generator @pytest.fixture diff --git a/cara/tests/apps/calculator/test_markdown_tools.py b/caimira/tests/apps/calculator/test_markdown_tools.py similarity index 91% rename from cara/tests/apps/calculator/test_markdown_tools.py rename to caimira/tests/apps/calculator/test_markdown_tools.py index 8b913067..9dfe0781 100644 --- a/cara/tests/apps/calculator/test_markdown_tools.py +++ b/caimira/tests/apps/calculator/test_markdown_tools.py @@ -3,7 +3,7 @@ import textwrap import jinja2 import pytest -import cara.apps.calculator.markdown_tools as md_tools +import caimira.apps.calculator.markdown_tools as md_tools @pytest.fixture diff --git a/cara/tests/apps/calculator/test_model_generator.py b/caimira/tests/apps/calculator/test_model_generator.py similarity index 98% rename from cara/tests/apps/calculator/test_model_generator.py rename to caimira/tests/apps/calculator/test_model_generator.py index 2ebd9ced..43c1a657 100644 --- a/cara/tests/apps/calculator/test_model_generator.py +++ b/caimira/tests/apps/calculator/test_model_generator.py @@ -6,11 +6,11 @@ import numpy.testing as npt import pytest from retry import retry -from cara.apps.calculator import model_generator -from cara.apps.calculator.model_generator import _hours2timestring -from cara.apps.calculator.model_generator import minutes_since_midnight -from cara import models -from cara.monte_carlo.data import expiration_distributions +from caimira.apps.calculator import model_generator +from caimira.apps.calculator.model_generator import _hours2timestring +from caimira.apps.calculator.model_generator import minutes_since_midnight +from caimira import models +from caimira.monte_carlo.data import expiration_distributions def test_model_from_dict(baseline_form_data): diff --git a/cara/tests/apps/calculator/test_report_generator.py b/caimira/tests/apps/calculator/test_report_generator.py similarity index 93% rename from cara/tests/apps/calculator/test_report_generator.py rename to caimira/tests/apps/calculator/test_report_generator.py index c18fdd45..4dcba65c 100644 --- a/cara/tests/apps/calculator/test_report_generator.py +++ b/caimira/tests/apps/calculator/test_report_generator.py @@ -6,14 +6,14 @@ import numpy.testing import numpy as np import pytest -from cara.apps.calculator import make_app -from cara.apps.calculator.report_generator import ReportGenerator, readable_minutes -import cara.apps.calculator.report_generator as rep_gen +from caimira.apps.calculator import make_app +from caimira.apps.calculator.report_generator import ReportGenerator, readable_minutes +import caimira.apps.calculator.report_generator as rep_gen def test_generate_report(baseline_form): # This is a simple test that confirms that given a model, we can actually - # generate a report for it. Because this is what happens in the cara + # generate a report for it. Because this is what happens in the caimira # calculator, we confirm that the generation happens within a reasonable # time threshold. time_limit: float = 20.0 # seconds diff --git a/cara/tests/apps/calculator/test_webapp.py b/caimira/tests/apps/calculator/test_webapp.py similarity index 89% rename from cara/tests/apps/calculator/test_webapp.py rename to caimira/tests/apps/calculator/test_webapp.py index 65ae284d..be604f0a 100644 --- a/cara/tests/apps/calculator/test_webapp.py +++ b/caimira/tests/apps/calculator/test_webapp.py @@ -4,15 +4,15 @@ import pytest import tornado.testing from retry import retry -import cara.apps.calculator -from cara.apps.calculator.report_generator import generate_permalink +import caimira.apps.calculator +from caimira.apps.calculator.report_generator import generate_permalink _TIMEOUT = 20. @pytest.fixture def app(): - return cara.apps.calculator.make_app() + return caimira.apps.calculator.make_app() async def test_homepage(http_server_client): @@ -47,7 +47,7 @@ async def test_404(http_server_client): @retry(tries=10) class TestBasicApp(tornado.testing.AsyncHTTPTestCase): def get_app(self): - return cara.apps.calculator.make_app() + return caimira.apps.calculator.make_app() @tornado.testing.gen_test(timeout=_TIMEOUT) def test_report(self): @@ -76,8 +76,8 @@ class TestBasicApp(tornado.testing.AsyncHTTPTestCase): @retry(tries=10) class TestCernApp(tornado.testing.AsyncHTTPTestCase): def get_app(self): - cern_theme = Path(cara.apps.calculator.__file__).parent.parent / 'themes' / 'cern' - return cara.apps.calculator.make_app(theme_dir=cern_theme) + cern_theme = Path(caimira.apps.calculator.__file__).parent.parent / 'themes' / 'cern' + return caimira.apps.calculator.make_app(theme_dir=cern_theme) @tornado.testing.gen_test(timeout=_TIMEOUT) def test_report(self): @@ -89,7 +89,7 @@ class TestCernApp(tornado.testing.AsyncHTTPTestCase): retry(tries=10) class TestOpenApp(tornado.testing.AsyncHTTPTestCase): def get_app(self): - return cara.apps.calculator.make_app(calculator_prefix="/mycalc") + return caimira.apps.calculator.make_app(calculator_prefix="/mycalc") @tornado.testing.gen_test(timeout=_TIMEOUT) def test_report(self): @@ -134,10 +134,10 @@ async def test_invalid_compressed_url(http_server_client, baseline_form): class TestError500(tornado.testing.AsyncHTTPTestCase): def get_app(self): - class ProcessingErrorPage(cara.apps.calculator.BaseRequestHandler): + class ProcessingErrorPage(caimira.apps.calculator.BaseRequestHandler): def get(self): raise ValueError('some unexpected error') - app = cara.apps.calculator.make_app() + app = caimira.apps.calculator.make_app() page = [ (r'/', ProcessingErrorPage), ] diff --git a/cara/tests/apps/test_expert_app.py b/caimira/tests/apps/test_expert_app.py similarity index 90% rename from cara/tests/apps/test_expert_app.py rename to caimira/tests/apps/test_expert_app.py index 3e4d2362..c94f8206 100644 --- a/cara/tests/apps/test_expert_app.py +++ b/caimira/tests/apps/test_expert_app.py @@ -1,11 +1,11 @@ import pytest -import cara.apps +import caimira.apps @pytest.fixture def expert_app(): - return cara.apps.ExpertApplication() + return caimira.apps.ExpertApplication() def test_app(expert_app): diff --git a/cara/tests/conftest.py b/caimira/tests/conftest.py similarity index 90% rename from cara/tests/conftest.py rename to caimira/tests/conftest.py index 2f9a3dc9..b64c0b20 100644 --- a/cara/tests/conftest.py +++ b/caimira/tests/conftest.py @@ -1,6 +1,6 @@ -from cara import models -import cara.data -import cara.dataclass_utils +from caimira import models +import caimira.data +import caimira.dataclass_utils import pytest @@ -51,11 +51,11 @@ def baseline_exposure_model(baseline_concentration_model, baseline_sr_model): @pytest.fixture def exposure_model_w_outside_temp_changes(baseline_exposure_model: models.ExposureModel): - exp_model = cara.dataclass_utils.nested_replace( + exp_model = caimira.dataclass_utils.nested_replace( baseline_exposure_model, { 'concentration_model.ventilation': models.SlidingWindow( active=models.PeriodicInterval(2.2 * 60, 1.8 * 60), - outside_temp=cara.data.GenevaTemperatures['Jan'], + outside_temp=caimira.data.GenevaTemperatures['Jan'], window_height=1.6, opening_length=0.6, ) diff --git a/cara/tests/data/__init__.py b/caimira/tests/data/__init__.py similarity index 100% rename from cara/tests/data/__init__.py rename to caimira/tests/data/__init__.py diff --git a/cara/tests/data/test_weather.py b/caimira/tests/data/test_weather.py similarity index 98% rename from cara/tests/data/test_weather.py rename to caimira/tests/data/test_weather.py index 2a667df8..03eb29c3 100644 --- a/cara/tests/data/test_weather.py +++ b/caimira/tests/data/test_weather.py @@ -5,7 +5,7 @@ import numpy as np import numpy.testing import pytest -import cara.data.weather as wx +import caimira.data.weather as wx def test_nearest_wx_station(): diff --git a/cara/tests/models/__init__.py b/caimira/tests/models/__init__.py similarity index 100% rename from cara/tests/models/__init__.py rename to caimira/tests/models/__init__.py diff --git a/cara/tests/models/test_concentration_model.py b/caimira/tests/models/test_concentration_model.py similarity index 99% rename from cara/tests/models/test_concentration_model.py rename to caimira/tests/models/test_concentration_model.py index ea11a005..0f6acb37 100644 --- a/cara/tests/models/test_concentration_model.py +++ b/caimira/tests/models/test_concentration_model.py @@ -4,7 +4,7 @@ import numpy as np import numpy.testing as npt import pytest -from cara import models +from caimira import models @pytest.mark.parametrize( diff --git a/cara/tests/models/test_exposure_model.py b/caimira/tests/models/test_exposure_model.py similarity index 98% rename from cara/tests/models/test_exposure_model.py rename to caimira/tests/models/test_exposure_model.py index 667ebf0b..49662bf0 100644 --- a/cara/tests/models/test_exposure_model.py +++ b/caimira/tests/models/test_exposure_model.py @@ -5,9 +5,9 @@ import numpy.testing import pytest from dataclasses import dataclass -from cara import models -from cara.models import ExposureModel -from cara.dataclass_utils import replace +from caimira import models +from caimira.models import ExposureModel +from caimira.dataclass_utils import replace @dataclass(frozen=True) diff --git a/cara/tests/models/test_mask.py b/caimira/tests/models/test_mask.py similarity index 97% rename from cara/tests/models/test_mask.py rename to caimira/tests/models/test_mask.py index 08004fa1..5d87ac61 100644 --- a/cara/tests/models/test_mask.py +++ b/caimira/tests/models/test_mask.py @@ -2,7 +2,7 @@ import numpy as np import numpy.testing as npt import pytest -from cara import models +from caimira import models @pytest.mark.parametrize( diff --git a/cara/tests/models/test_piecewiseconstant.py b/caimira/tests/models/test_piecewiseconstant.py similarity index 98% rename from cara/tests/models/test_piecewiseconstant.py rename to caimira/tests/models/test_piecewiseconstant.py index 9ef3befb..74c8a056 100644 --- a/cara/tests/models/test_piecewiseconstant.py +++ b/caimira/tests/models/test_piecewiseconstant.py @@ -1,8 +1,8 @@ import numpy as np import pytest -from cara import models -from cara import data +from caimira import models +from caimira import data def test_piecewiseconstantfunction_wrongarguments(): diff --git a/cara/tests/models/test_short_range_model.py b/caimira/tests/models/test_short_range_model.py similarity index 96% rename from cara/tests/models/test_short_range_model.py rename to caimira/tests/models/test_short_range_model.py index a62b23d8..28bb8934 100644 --- a/cara/tests/models/test_short_range_model.py +++ b/caimira/tests/models/test_short_range_model.py @@ -3,10 +3,10 @@ import typing import numpy as np import pytest -from cara import models -import cara.monte_carlo as mc_models -from cara.apps.calculator.model_generator import build_expiration -from cara.monte_carlo.data import short_range_expiration_distributions,\ +from caimira import models +import caimira.monte_carlo as mc_models +from caimira.apps.calculator.model_generator import build_expiration +from caimira.monte_carlo.data import short_range_expiration_distributions,\ expiration_distributions, short_range_distances, activity_distributions SAMPLE_SIZE = 250_000 diff --git a/cara/tests/test_cara.py b/caimira/tests/test_cara.py similarity index 53% rename from cara/tests/test_cara.py rename to caimira/tests/test_cara.py index 0e8dfdb0..c99882be 100644 --- a/cara/tests/test_cara.py +++ b/caimira/tests/test_cara.py @@ -3,8 +3,8 @@ High-level tests for the package. """ -import cara +import caimira def test_version(): - assert cara.__version__ is not None + assert caimira.__version__ is not None diff --git a/cara/tests/test_dataclass_utils.py b/caimira/tests/test_dataclass_utils.py similarity index 91% rename from cara/tests/test_dataclass_utils.py rename to caimira/tests/test_dataclass_utils.py index 270066ee..ac575052 100644 --- a/cara/tests/test_dataclass_utils.py +++ b/caimira/tests/test_dataclass_utils.py @@ -1,6 +1,6 @@ import dataclasses -from cara.dataclass_utils import nested_replace, walk_dataclass +from caimira.dataclass_utils import nested_replace, walk_dataclass @dataclasses.dataclass(frozen=True) diff --git a/cara/tests/test_expiration.py b/caimira/tests/test_expiration.py similarity index 95% rename from cara/tests/test_expiration.py rename to caimira/tests/test_expiration.py index b9a04cf9..4d498775 100644 --- a/cara/tests/test_expiration.py +++ b/caimira/tests/test_expiration.py @@ -5,8 +5,8 @@ import numpy.testing as npt import pytest from retry import retry -from cara import models -from cara.monte_carlo.data import expiration_distribution +from caimira import models +from caimira.monte_carlo.data import expiration_distribution def test_multiple_wrong_weight_size(): diff --git a/cara/tests/test_full_algorithm.py b/caimira/tests/test_full_algorithm.py similarity index 98% rename from cara/tests/test_full_algorithm.py rename to caimira/tests/test_full_algorithm.py index ff16335c..89af5545 100644 --- a/cara/tests/test_full_algorithm.py +++ b/caimira/tests/test_full_algorithm.py @@ -8,12 +8,12 @@ import numpy.testing as npt import pytest from retry import retry -import cara.monte_carlo as mc -from cara import models,data -from cara.utils import method_cache -from cara.models import _VectorisedFloat,Interval,SpecificInterval -from cara.monte_carlo.sampleable import LogNormal -from cara.monte_carlo.data import (expiration_distributions, +import caimira.monte_carlo as mc +from caimira import models,data +from caimira.utils import method_cache +from caimira.models import _VectorisedFloat,Interval,SpecificInterval +from caimira.monte_carlo.sampleable import LogNormal +from caimira.monte_carlo.data import (expiration_distributions, expiration_BLO_factors,short_range_expiration_distributions, short_range_distances,virus_distributions,activity_distributions) @@ -29,7 +29,7 @@ ln2 = np.log(2) class SimpleConcentrationModel: """ Simple model for the background (long-range) concentration, without - all the flexibility of cara.models.ConcentrationModel. + all the flexibility of caimira.models.ConcentrationModel. For independent, end-to-end testing purposes. This assumes no mask wearing, and the same ventilation rate at all times. @@ -183,7 +183,7 @@ class SimpleConcentrationModel: class SimpleShortRangeModel: """ Simple model for the short-range concentration, without - all the flexibility of cara.models.ShortRangeModel. + all the flexibility of caimira.models.ShortRangeModel. For independent, end-to-end testing purposes. This assumes no mask wearing. """ @@ -286,7 +286,7 @@ class SimpleShortRangeModel: class SimpleExposureModel(SimpleConcentrationModel): """ Simple model for the background (long-range) exposure, without - all the flexibility of cara.models.ExposureModel. + all the flexibility of caimira.models.ExposureModel. For independent, end-to-end testing purposes. This assumes no mask wearing, identical inhalation and exhalation breathing rate, indentical presence for the infected and the exposed diff --git a/cara/tests/test_infected_population.py b/caimira/tests/test_infected_population.py similarity index 74% rename from cara/tests/test_infected_population.py rename to caimira/tests/test_infected_population.py index 8856d312..8937d1af 100644 --- a/cara/tests/test_infected_population.py +++ b/caimira/tests/test_infected_population.py @@ -1,7 +1,7 @@ import numpy as np import pytest -import cara.models +import caimira.models @pytest.mark.parametrize( @@ -17,25 +17,25 @@ def test_infected_population_vectorisation(override_params): } defaults.update(override_params) - office_hours = cara.models.SpecificInterval(present_times=[(8,17)]) - infected = cara.models.InfectedPopulation( + office_hours = caimira.models.SpecificInterval(present_times=[(8,17)]) + infected = caimira.models.InfectedPopulation( number=1, presence=office_hours, - mask=cara.models.Mask( + mask=caimira.models.Mask( factor_exhale=0.95, η_inhale=0.3, ), - activity=cara.models.Activity( + activity=caimira.models.Activity( 0.51, defaults['exhalation_rate'], ), - virus=cara.models.Virus( + virus=caimira.models.Virus( viral_load_in_sputum=defaults['viral_load_in_sputum'], infectious_dose=50., viable_to_RNA_ratio = 0.5, transmissibility_factor=1.0, ), - expiration=cara.models._ExpirationBase.types['Breathing'], + expiration=caimira.models._ExpirationBase.types['Breathing'], host_immunity=0., ) emission_rate = infected.emission_rate(10) diff --git a/cara/tests/test_known_quantities.py b/caimira/tests/test_known_quantities.py similarity index 99% rename from cara/tests/test_known_quantities.py rename to caimira/tests/test_known_quantities.py index 19314824..8f061486 100644 --- a/cara/tests/test_known_quantities.py +++ b/caimira/tests/test_known_quantities.py @@ -2,8 +2,8 @@ import numpy as np import numpy.testing as npt import pytest -import cara.models as models -import cara.data as data +import caimira.models as models +import caimira.data as data def test_no_mask_superspeading_emission_rate(baseline_concentration_model): diff --git a/cara/tests/test_model.py b/caimira/tests/test_model.py similarity index 87% rename from cara/tests/test_model.py rename to caimira/tests/test_model.py index add6a899..eec01921 100644 --- a/cara/tests/test_model.py +++ b/caimira/tests/test_model.py @@ -1,5 +1,5 @@ -import cara.models -from cara.dataclass_utils import nested_replace +import caimira.models +from caimira.dataclass_utils import nested_replace def test_exposure_r0(baseline_exposure_model): diff --git a/caimira/tests/test_monte_carlo.py b/caimira/tests/test_monte_carlo.py new file mode 100644 index 00000000..c549e501 --- /dev/null +++ b/caimira/tests/test_monte_carlo.py @@ -0,0 +1,97 @@ +import dataclasses + +import numpy as np +import pytest + +import caimira.models +import caimira.monte_carlo.models as mc_models +import caimira.monte_carlo.sampleable + +MODEL_CLASSES = [ + cls for cls in vars(caimira.models).values() + if dataclasses.is_dataclass(cls) +] + + +def test_type_annotations(): + # Check that there are appropriate type annotations for all of the model + # classes in caimira.models. Note that these must be statically defined in + # caimira.monte_carlo, rather than being dynamically generated, in order to + # allow the type system to be able to see their definition without needing + # runtime execution. + missing = [] + for cls in MODEL_CLASSES: + if not hasattr(caimira.monte_carlo, cls.__name__): + missing.append(cls.__name__) + continue + mc_cls = getattr(caimira.monte_carlo, cls.__name__) + assert issubclass(mc_cls, caimira.monte_carlo.MCModelBase) + + if missing: + msg = ( + 'There are missing model implementations in caimira.monte_carlo. ' + 'The following definitions are needed:\n ' + + '\n '.join([f'{model} = build_mc_model(caimira.models.{model})' for model in missing]) + ) + pytest.fail(msg) + + +@pytest.fixture +def baseline_mc_concentration_model() -> caimira.monte_carlo.ConcentrationModel: + mc_model = caimira.monte_carlo.ConcentrationModel( + room=caimira.monte_carlo.Room(volume=caimira.monte_carlo.sampleable.Normal(75, 20), + inside_temp=caimira.models.PiecewiseConstant((0., 24.), (293,))), + ventilation=caimira.monte_carlo.SlidingWindow( + active=caimira.models.PeriodicInterval(period=120, duration=120), + outside_temp=caimira.models.PiecewiseConstant((0., 24.), (283,)), + window_height=1.6, opening_length=0.6, + ), + infected=caimira.models.InfectedPopulation( + number=1, + virus=caimira.models.Virus.types['SARS_CoV_2'], + presence=caimira.models.SpecificInterval(((0., 4.), (5., 8.))), + mask=caimira.models.Mask.types['No mask'], + activity=caimira.models.Activity.types['Light activity'], + expiration=caimira.models.Expiration.types['Breathing'], + host_immunity=0., + ), + evaporation_factor=0.3, + ) + return mc_model + + +@pytest.fixture +def baseline_mc_sr_model() -> caimira.monte_carlo.ShortRangeModel: + return () + + +@pytest.fixture +def baseline_mc_exposure_model(baseline_mc_concentration_model, baseline_mc_sr_model) -> caimira.monte_carlo.ExposureModel: + return caimira.monte_carlo.ExposureModel( + baseline_mc_concentration_model, + baseline_mc_sr_model, + exposed=caimira.models.Population( + number=10, + presence=baseline_mc_concentration_model.infected.presence, + activity=baseline_mc_concentration_model.infected.activity, + mask=baseline_mc_concentration_model.infected.mask, + host_immunity=0., + ) + ) + + +def test_build_concentration_model(baseline_mc_concentration_model: caimira.monte_carlo.ConcentrationModel): + model = baseline_mc_concentration_model.build_model(7) + assert isinstance(model, caimira.models.ConcentrationModel) + assert isinstance(model.concentration(time=0.), float) + conc = model.concentration(time=1.) + assert isinstance(conc, np.ndarray) + assert conc.shape == (7, ) + + +def test_build_exposure_model(baseline_mc_exposure_model: caimira.monte_carlo.ExposureModel): + model = baseline_mc_exposure_model.build_model(7) + assert isinstance(model, caimira.models.ExposureModel) + prob = model.deposited_exposure() + assert isinstance(prob, np.ndarray) + assert prob.shape == (7, ) diff --git a/cara/tests/test_monte_carlo_full_models.py b/caimira/tests/test_monte_carlo_full_models.py similarity index 97% rename from cara/tests/test_monte_carlo_full_models.py rename to caimira/tests/test_monte_carlo_full_models.py index ffbaef42..dfcff434 100644 --- a/cara/tests/test_monte_carlo_full_models.py +++ b/caimira/tests/test_monte_carlo_full_models.py @@ -3,10 +3,10 @@ import numpy.testing as npt import pytest from retry import retry -import cara.monte_carlo as mc -from cara import models,data -from cara.monte_carlo.data import activity_distributions, virus_distributions, expiration_distributions, infectious_dose_distribution, viable_to_RNA_ratio_distribution -from cara.apps.calculator.model_generator import build_expiration +import caimira.monte_carlo as mc +from caimira import models,data +from caimira.monte_carlo.data import activity_distributions, virus_distributions, expiration_distributions, infectious_dose_distribution, viable_to_RNA_ratio_distribution +from caimira.apps.calculator.model_generator import build_expiration SAMPLE_SIZE = 500_000 TOLERANCE = 0.05 diff --git a/cara/tests/test_predefined_distributions.py b/caimira/tests/test_predefined_distributions.py similarity index 94% rename from cara/tests/test_predefined_distributions.py rename to caimira/tests/test_predefined_distributions.py index 959565f7..e2c029da 100644 --- a/cara/tests/test_predefined_distributions.py +++ b/caimira/tests/test_predefined_distributions.py @@ -2,7 +2,7 @@ import numpy as np import numpy.testing as npt import pytest -from cara.monte_carlo.data import activity_distributions, virus_distributions +from caimira.monte_carlo.data import activity_distributions, virus_distributions # Mean & std deviations from https://doi.org/10.1101/2021.10.14.21264988 (Table 3) diff --git a/cara/tests/test_sampleable_distribution.py b/caimira/tests/test_sampleable_distribution.py similarity index 99% rename from cara/tests/test_sampleable_distribution.py rename to caimira/tests/test_sampleable_distribution.py index 76544b35..98f0a9ca 100644 --- a/cara/tests/test_sampleable_distribution.py +++ b/caimira/tests/test_sampleable_distribution.py @@ -3,7 +3,7 @@ import numpy.testing as npt import pytest from retry import retry -from cara.monte_carlo import sampleable +from caimira.monte_carlo import sampleable @retry(tries=10) diff --git a/cara/tests/test_state.py b/caimira/tests/test_state.py similarity index 99% rename from cara/tests/test_state.py rename to caimira/tests/test_state.py index 814d2ae4..f984136d 100644 --- a/cara/tests/test_state.py +++ b/caimira/tests/test_state.py @@ -4,7 +4,7 @@ from unittest.mock import Mock import pytest -from cara import state +from caimira import state @dataclass diff --git a/cara/tests/test_ventilation.py b/caimira/tests/test_ventilation.py similarity index 99% rename from cara/tests/test_ventilation.py rename to caimira/tests/test_ventilation.py index 201da2c7..4a09782f 100644 --- a/cara/tests/test_ventilation.py +++ b/caimira/tests/test_ventilation.py @@ -4,7 +4,7 @@ import numpy as np import numpy.testing as npt import pytest -from cara import models +from caimira import models @pytest.fixture diff --git a/cara/utils.py b/caimira/utils.py similarity index 100% rename from cara/utils.py rename to caimira/utils.py diff --git a/cara/tests/apps/calculator/test_report_json.py b/cara/tests/apps/calculator/test_report_json.py deleted file mode 100644 index a15983df..00000000 --- a/cara/tests/apps/calculator/test_report_json.py +++ /dev/null @@ -1,31 +0,0 @@ -import json - -import tornado.testing - -import cara.apps.calculator -from cara.apps.calculator import model_generator - -_TIMEOUT = 40. - - -class TestCalculatorJsonResponse(tornado.testing.AsyncHTTPTestCase): - def setUp(self): - super().setUp() - self.http_client.defaults['request_timeout'] = _TIMEOUT - - def get_app(self): - return cara.apps.calculator.make_app() - - @tornado.testing.gen_test(timeout=_TIMEOUT) - def test_json_response(self): - response = yield self.http_client.fetch( - request=self.get_url("/calculator/report-json"), - method="POST", - headers={'content-type': 'application/json'}, - body=json.dumps(model_generator.baseline_raw_form_data()) - ) - self.assertEqual(response.code, 200) - - data = json.loads(response.body) - self.assertIsInstance(data['prob_inf'], float) - self.assertIsInstance(data['expected_new_cases'], float) diff --git a/cara/tests/models/test_virus.py b/cara/tests/models/test_virus.py deleted file mode 100644 index 650da211..00000000 --- a/cara/tests/models/test_virus.py +++ /dev/null @@ -1,25 +0,0 @@ -import numpy as np -import numpy.testing as npt -import pytest - -from cara import models - - -@pytest.mark.parametrize( - "inside_temp, humidity, expected_halflife, expected_decay_constant", - [ - [293.15, 0.5, 0.5947447349860315, 1.1654532436949188], - [272.15, 0.7, 1.6070844193207476, 0.4313072619127947], - [300.15, 1., 0.17367078830147223, 3.9911558376571805], - [300.15, 0., 6.43, 0.10779893943389507], - [np.array([272.15, 300.15]), np.array([0.7, 0.]), - np.array([1.60708442, 6.43]), np.array([0.43130726, 0.10779894])], - [np.array([293.15, 300.15]), np.array([0.5, 1.]), - np.array([0.59474473, 0.17367079]), np.array([1.16545324, 3.99115584])] - ], -) -def test_decay_constant(inside_temp, humidity, expected_halflife, expected_decay_constant): - npt.assert_almost_equal(models.Virus.types['SARS_CoV_2'].halflife(humidity, inside_temp), - expected_halflife) - npt.assert_almost_equal(models.Virus.types['SARS_CoV_2'].decay_constant(humidity, inside_temp), - expected_decay_constant) \ No newline at end of file diff --git a/cara/tests/test_monte_carlo.py b/cara/tests/test_monte_carlo.py deleted file mode 100644 index d709e6c1..00000000 --- a/cara/tests/test_monte_carlo.py +++ /dev/null @@ -1,97 +0,0 @@ -import dataclasses - -import numpy as np -import pytest - -import cara.models -import cara.monte_carlo.models as mc_models -import cara.monte_carlo.sampleable - -MODEL_CLASSES = [ - cls for cls in vars(cara.models).values() - if dataclasses.is_dataclass(cls) -] - - -def test_type_annotations(): - # Check that there are appropriate type annotations for all of the model - # classes in cara.models. Note that these must be statically defined in - # cara.monte_carlo, rather than being dynamically generated, in order to - # allow the type system to be able to see their definition without needing - # runtime execution. - missing = [] - for cls in MODEL_CLASSES: - if not hasattr(cara.monte_carlo, cls.__name__): - missing.append(cls.__name__) - continue - mc_cls = getattr(cara.monte_carlo, cls.__name__) - assert issubclass(mc_cls, cara.monte_carlo.MCModelBase) - - if missing: - msg = ( - 'There are missing model implementations in cara.monte_carlo. ' - 'The following definitions are needed:\n ' + - '\n '.join([f'{model} = build_mc_model(cara.models.{model})' for model in missing]) - ) - pytest.fail(msg) - - -@pytest.fixture -def baseline_mc_concentration_model() -> cara.monte_carlo.ConcentrationModel: - mc_model = cara.monte_carlo.ConcentrationModel( - room=cara.monte_carlo.Room(volume=cara.monte_carlo.sampleable.Normal(75, 20), - inside_temp=cara.models.PiecewiseConstant((0., 24.), (293,))), - ventilation=cara.monte_carlo.SlidingWindow( - active=cara.models.PeriodicInterval(period=120, duration=120), - outside_temp=cara.models.PiecewiseConstant((0., 24.), (283,)), - window_height=1.6, opening_length=0.6, - ), - infected=cara.models.InfectedPopulation( - number=1, - virus=cara.models.Virus.types['SARS_CoV_2'], - presence=cara.models.SpecificInterval(((0., 4.), (5., 8.))), - mask=cara.models.Mask.types['No mask'], - activity=cara.models.Activity.types['Light activity'], - expiration=cara.models.Expiration.types['Breathing'], - host_immunity=0., - ), - evaporation_factor=0.3, - ) - return mc_model - - -@pytest.fixture -def baseline_mc_sr_model() -> cara.monte_carlo.ShortRangeModel: - return () - - -@pytest.fixture -def baseline_mc_exposure_model(baseline_mc_concentration_model, baseline_mc_sr_model) -> cara.monte_carlo.ExposureModel: - return cara.monte_carlo.ExposureModel( - baseline_mc_concentration_model, - baseline_mc_sr_model, - exposed=cara.models.Population( - number=10, - presence=baseline_mc_concentration_model.infected.presence, - activity=baseline_mc_concentration_model.infected.activity, - mask=baseline_mc_concentration_model.infected.mask, - host_immunity=0., - ) - ) - - -def test_build_concentration_model(baseline_mc_concentration_model: cara.monte_carlo.ConcentrationModel): - model = baseline_mc_concentration_model.build_model(7) - assert isinstance(model, cara.models.ConcentrationModel) - assert isinstance(model.concentration(time=0.), float) - conc = model.concentration(time=1.) - assert isinstance(conc, np.ndarray) - assert conc.shape == (7, ) - - -def test_build_exposure_model(baseline_mc_exposure_model: cara.monte_carlo.ExposureModel): - model = baseline_mc_exposure_model.build_model(7) - assert isinstance(model, cara.models.ExposureModel) - prob = model.deposited_exposure() - assert isinstance(prob, np.ndarray) - assert prob.shape == (7, ) diff --git a/requirements.txt b/requirements.txt index a7a970cb..ceb2da70 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ -# Created by installing the cara[app] extra and running: +# Created by installing the caimira[app] extra and running: # echo '.[app]' > requirements.txt -# pip list --format freeze | grep -vi cara | grep -v pip | grep -v setuptools >> requirements.txt +# pip list --format freeze | grep -vi caimira | grep -v pip | grep -v setuptools >> requirements.txt .[app] anyio==3.3.0 diff --git a/server-performance-tests/README.md b/server-performance-tests/README.md index 7bf5e43b..61fcaf7d 100644 --- a/server-performance-tests/README.md +++ b/server-performance-tests/README.md @@ -11,7 +11,7 @@ In order to set it up for the first time, we followed the documentation at https To use, uncomment the desired method on ``lucust.py``` file, open the terminal on this folder and run the following command: -``locust -f locust.py --host https://cara.web.cern.ch`` +``locust -f locust.py --host https://caimira.web.cern.ch`` Then, open up a browser and point it to http://localhost:8089. By default we pointed out the test to our own web server. diff --git a/setup.py b/setup.py index 1e12f4fa..108a3811 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ -# This module is part of CARA. Please see the repository at +# This module is part of CAiMIRA. Please see the repository at # https://gitlab.cern.ch/cara/cara for details of the license and terms of use. """ -setup.py for CARA. +setup.py for CAiMIRA. For reference see https://packaging.python.org/guides/distributing-packages-using-setuptools/ @@ -58,7 +58,7 @@ REQUIREMENTS: dict = { setup( - name='CARA', + name='CAiMIRA', version="1.0.0", maintainer='Andre Henriques', @@ -66,7 +66,7 @@ setup( description='COVID Airborne Risk Assessment', long_description=LONG_DESCRIPTION, long_description_content_type='text/markdown', - url='cern.ch/cara', + url='cern.ch/caimira', packages=find_packages(), python_requires='~=3.9', @@ -87,7 +87,7 @@ setup( # The 'all' extra is the union of all requirements. 'all': [req for reqs in REQUIREMENTS.values() for req in reqs], }, - package_data={'cara': [ + package_data={'caimira': [ 'apps/*/*', 'apps/*/*/*', 'apps/*/*/*/*',